1

セル内の値を見つけるアルゴリズムがあります。この場合、セルはC10であるとしましょう。D列の隣で値を探す必要があります。その値が必要な値と一致しない場合は、そのセルから1つ上に移動して、一致するかどうかを確認します。これまでのところ、次のようになっています。

bits = [] 

for row in ws.iter_rows(row_offset=4,column_offset=3):
    #skip over empty rows
    if row:
        #current cell is in column C
        cell = row[2]
        try:
            #find the lowest address in the excel sheet
            if cell.internal_value == min(address):
                #somehow match up in column d
                for '''loop and search col D''':
                    if str(row[3].internal_value).upper == ('CONTROL 1' or 'CON 1'):
                        #add bits
                        for cell in row[4:]:
                            bits.append(cell.internal_value)    
        #pass over cells that aren't a number, ie values that will never match an address
        except ValueError:
            pass
        except TypeError:
            pass

これを行う方法はありますか?D列の比較を使用した比較は知っていrow[3]ますが、最初に正しくない場合は、列を上に移動する方法がわかりません。つまり、の値を変更するrow[value]と行内を移動するので、どの値/列内を移動するかを知る必要があります。

ありがとう!

4

1 に答える 1

1
bits = []
min_address = False
for row in ws.iter_rows(row_offset=4,column_offset=3):
    c = row[2]
    d = row[3]
    if not d.internal_value: #d will always have a value if the row isn't blank
        if min_address: 
            break #bits is what you want it to be now
        bits = [] #reset bits every time we hit a new row
        continue #this will just skip to next row

    for bits_cell in row[4:]:
        if bits_cell.internal_value:
            bits.append(bits_cell.internal_value)
    if c.internal_value:
        if c.internal_value == min(address):
            min_address = True #we set it to true, then kept going until blank row
于 2012-06-25T17:36:53.133 に答える