如何使用Excel VBA计算和复制条目
目前,我正在处理一个包含135.000行的Excel报告。其中列出了一些资产,我想计算每个资产并将其写入另一个工作表如何使用Excel VBA计算和复制条目,excel,vba,Excel,Vba,目前,我正在处理一个包含135.000行的Excel报告。其中列出了一些资产,我想计算每个资产并将其写入另一个工作表 Sub assetVulnerabilityCount() With Sheets("tblExport") assetCount = 1 rowMax = Sheets("tblExport").Cells(.Rows.Count, "F").End(xlUp).row currentAsset = Sheets("tbl
Sub assetVulnerabilityCount()
With Sheets("tblExport")
assetCount = 1
rowMax = Sheets("tblExport").Cells(.Rows.Count, "F").End(xlUp).row
currentAsset = Sheets("tblExport").Range("B" & row).Value
For row = 2 To rowMax
If currentAsset = Sheets("tblExport").Range("B" & row).Value Then
Sheets("tblTarget").Range("B" & assetCount).Value = Sheets("tblTarget").Range("B" & assetCount).Value + 1
Sheets("tblTarget").Range("A" & assetCount).Value = currentAsset
Else:
currentAsset = Sheets("tblExport").Range("B" & row).Value
assetCount = assetCount + 1
End If
Next Zeile
End With
End Sub
我试着写一个VBA脚本,你可以在下面找到。它只复制一个条目,但不遍历工作表的每一行
Sub assetVulnerabilityCount()
With Sheets("tblExport")
assetCount = 1
rowMax = Sheets("tblExport").Cells(.Rows.Count, "F").End(xlUp).row
currentAsset = Sheets("tblExport").Range("B" & row).Value
For row = 2 To rowMax
If currentAsset = Sheets("tblExport").Range("B" & row).Value Then
Sheets("tblTarget").Range("B" & assetCount).Value = Sheets("tblTarget").Range("B" & assetCount).Value + 1
Sheets("tblTarget").Range("A" & assetCount).Value = currentAsset
Else:
currentAsset = Sheets("tblExport").Range("B" & row).Value
assetCount = assetCount + 1
End If
Next Zeile
End With
End Sub
理想情况下,它将如下所示:
Worksheet1:
Asset Names:
Laptop1337
Laptop1337
Laptop1337
PC420
PC420
Worksheet2:
Asset Name: Amount:
Laptop1337 3
PC420 2
工作表1是我所拥有的,工作表2是我所需要的。如果我们假设rowMax具有需要迭代的行数,那么
For row = 2 To rowMax
如果
Next Zeile
被替换为
Next row
因为循环中的变量是
row
。现在编译器在这一行“currentAsset=Sheets”(“tblExport”).Range(“B”&row”).Value上说object error(1004)。那么哪一个是未定义的呢?我们无法调试您的代码。好的,我在microsoft页面上做了一些研究,结果显示错误号1004连接到复制和粘贴数据。这里说这两个条件中有一个是真的Microsoft Visual Basic for Applications(VBA)宏复制并粘贴Excel 2003工作簿中的一整行。Microsoft VBA宏在Excel 2003工作簿中复制和粘贴2516行或更多行的范围。
然后他们建议使用以下内容:range(range(“a”)和ActiveCell.Row)、range(“IV”和ActiveCell.Row).End(xlToLeft))。选择
,但我不确定如何将其应用于我的代码。好的,我现在已经解决了问题,代码运行几乎正常!现在我有一个问题,计数器的计数比预期少了一个单位,除了它迭代通过的第一个资产