如何查找最后一行是否使用Python Win32com在Excel中查找特定列的值

我有一个Excel文件,我使用python Win32com来操作它。

如何检查最后一行是否在特定列中有值?

当我尝试的时候,是28,而不是23(最后一行的值不是空的)

used = sht1.UsedRange nrows = used.Row + used.Rows.Count - 1 

我想找到位置I24

当你想获得任何特定列的最后一行时,UsedRange总是不可靠。 您应该使用EndXlUp或EndXlDown函数。

检查下面这行:

 LastRow = Sheets("Sheet1").Range("A" & Sheets("Sheet1").Rows.Count).End(xlUp).Row 

其中,A是获得最后一行的列。

此外,请检查此URL: 在VBA中查找上次使用的单元格时出错

由于您使用的是python win32 com,因此Endxlup无法正常工作。 有一件基本的事情可以做。 检查下面的代码:

 ws = wb.Worksheets('Sheet1') rw = 2 While ws.cells(rw, 1) <> "" rw +=1 

其中,rw是您想要开始行数的起始行。 (rw,1)中的1表示列。 A栏代表A.

逻辑背后是循环将运行,直到它没有得到列A中的空白单元格,你会得到variablesrw的行数

我用这种愚蠢的方式去做。 不知道有没有问题。 到目前为止为自己工作

 def find_lastrow_oncolumn(worksht, colno): used = worksht.UsedRange nrows = used.Row + used.Rows.Count - 1 lastrow_havevalue = 0 for k in range(nrows): if worksht.Cells(nrows-k, colno).Value is not None: print worksht.Cells(nrows-k, colno).Value, nrows-k , k lastrow_havevalue = nrows-k break return lastrow_havevalue 

xlUp是一个预定义的常量。

所以最简单的方法是在VBE的直接窗口中input代码

 ? xlUp 

你会看到下面的结果。

 -4162 

将该行添加到您的Python代码

 xlUp = -4162 

完成!