Suchen in Excel 2002, seltsames Phänomen
Verfasst: Dienstag 31. Januar 2006, 11:15
Ahoi zusammen!
Unten stehende Methode macht mir Kummer. Beim Suchen im gesamten Arbeitsblatt werden korrekte Werte für die letzte Zelle zurück gegeben. Ebenso, wenn der Bereich bis ganz nach rechts geht (Spalte IV). Wenn der zu durchsuchende Bereich aber z.B. nur bis IN geht wird mir immer ein Spaltenwert zu wenig angegeben, also IM. Der Bereich wird angegeben in der Form 'A1:IR50'. Irgendwer ne Idee? Was überseh ich?
TIA
Greetings!
Unten stehende Methode macht mir Kummer. Beim Suchen im gesamten Arbeitsblatt werden korrekte Werte für die letzte Zelle zurück gegeben. Ebenso, wenn der Bereich bis ganz nach rechts geht (Spalte IV). Wenn der zu durchsuchende Bereich aber z.B. nur bis IN geht wird mir immer ein Spaltenwert zu wenig angegeben, also IM. Der Bereich wird angegeben in der Form 'A1:IR50'. Irgendwer ne Idee? Was überseh ich?
TIA
Greetings!
Code: Alles auswählen
def findLastCell(self, bereich=None):
"""Findet die letzte Zeile im übergebenen Bereich oder im ganzen aktiven Blatt.
Gibt ein Dictionary zurück mit der Spalte und der Zeile der letzte Zelle."""
found = {}
start = ''
if type(bereich) == types.NoneType: # gesamtes Arbeitsblatt! Sollte eigentlich so funktionieren wie in Excel 97!
letzteZelle = self.sheet.Cells.SpecialCells(self.constants.xlCellTypeLastCell)
return {'Spalte':letzteZelle.Column, 'Zeile':letzteZelle.Row}
else: # nur bestimmter Bereich
matrix = self.readMatrix(bereich)
imax = xrange(len(matrix))
for i in imax:
jmax = xrange(len(matrix[i]))
for j in jmax:
if type(matrix[i][j]) == types.NoneType:
continue
else:
found['Spalte'] = i
found['Zeile'] = int(j)
for i in bereich:# bestimmen der ersten Zelle im Bereich
if i == ':':
break
else:
start += i
x = [e for e in start if e in ascii_uppercase] # x-Koordinate der ersten Zelle im Bereich
y = [e for e in start if e in digits] # y-Koordinate der ersten Zelle im Bereich
found['Spalte'] += self.xlIndex2Number(''.join(x)) # Hinzufügen des gefundenen x-Wertes zu dem der ersten Zelle
found['Zeile'] += int(''.join(y)) # Hinzufügen des gefundenen y-Wertes zu dem der ersten Zelle
return found