[英]why pandas in python does not return all the rows from excel sheet?
[英]Why does excel rowcount return max row, after a change on the sheet?
代码工作“漂亮”(它需要清理等)但如果我删除行或修改Worksheets("Material For Quotation")
并重新运行代码,它默认为最大行数(1,048,576)。 我四处搜索并阅读了微软的东西,但我无法弄清楚。 我难倒的是代码应该独立于工作表中的内容运行,但是我删除或修改工作表行计数的那一刻不起作用。
有没有人有洞察力?
Sub QuoteToMaterial()
Dim wb As Workbook
Dim ws, wscheck, ws1, ws2 As Worksheet
Dim i, j, k, l As Integer
Dim dict As New Dictionary
Dim Str As String
Dim key As Variant
Set wb = ThisWorkbook
Set ws1 = wb.Worksheets("Material For Quotation")
i = ws1.Cells(Rows.Count, 2).End(xlUp).row
j = 1
'init dictionary
For j = 2 To i
If dict.Exists(Trim(UCase(ws1.Cells(j, 3).value))) = True Then
dict(Trim(UCase(ws1.Cells(j, 3).value))) = dict(Trim(UCase(ws1.Cells(j, 3).value))) + ws1.Cells(j, 4).value
Else
dict.Add ws1.Cells(j, 3).value, ws1.Cells(j, 4).value
End If
Next j
i = wb.Worksheets.Count
j = 1
For k = 1 To i
Set wscheck = wb.Worksheets(k)
Select Case True
Case wscheck.Name = "Summary"
GoTo Loopiter 'loop iterate
Case wscheck.Name = "Material For Quotation"
GoTo Loopiter
Case wscheck.Name = "Pricing Summary"
GoTo Loopiter
Case wscheck.Name = "Installation 1"
GoTo Loopiter
Case wscheck.Name = "Installation 2"
GoTo Loopiter
Case wscheck.Name = "Inst Worksheet 1"
GoTo Loopiter
Case wscheck.Name = "Inst Worksheet 2"
GoTo Loopiter
Case Else
Set ws = wb.Worksheets(k)
'inserts $ per unit into the right place
For l = 4 To 101
If dict.Exists(ws.Cells(l, 9).value) = True Then
ws.Cells(l, 11).value = dict(ws.Cells(l, 9).value)
End If
Next l
j = j + 1
End Select
Loopiter:
Next k
End Sub
对不起,伙计们,这个问题的答案是我们最终将表格格式放在第 1-4 列到第 1,048,576 行。 所以使用ws.cells(rows.count,2)
到底部,因为它们都被一个表占用了。
纠正要么删除表格格式,只填充单元格以获取外观或使用listobject
并获取填充行的数量。
对不起,直到每个人都专注于凌乱的代码,我才意识到这个问题,哈哈
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.