Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Excel VBA计算和复制条目_Excel_Vba - Fatal编程技术网

如何使用Excel VBA计算和复制条目

如何使用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

目前,我正在处理一个包含135.000行的Excel报告。其中列出了一些资产,我想计算每个资产并将其写入另一个工作表

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))。选择
,但我不确定如何将其应用于我的代码。好的,我现在已经解决了问题,代码运行几乎正常!现在我有一个问题,计数器的计数比预期少了一个单位,除了它迭代通过的第一个资产