如何匹配VBA中行之间不同列的数据

时间:2015-06-01 15:22:26

标签: excel vba excel-vba

这是我第一次使用VBA /宏 所以我有一个excel文件,其中订单号为行,行号为列,然后是位置编号作为单元格中的值。

我想要设置一个当前行,然后循环其余行,并在其中包含数据,将这些行的单元格中的值与设置行中的值进行比较,然后计算匹配数。在我计算它们之后,我想将该matchcount数字放入一个新列,然后按matchcount对整个工作表进行排序,这样我就可以获取前9行,然后将这10个(包括设置行)移动到新工作表中。

这是我到目前为止所遇到的各种错误。语法是一个大问题。我一直试图通过谷歌搜索来弄清楚VBA,因此语法在翻译中丢失了。我还不确定如何在循环时将数据从一个工作表粘贴到新工作表中,以便粘贴的新数据转到下一个自由行,而不是粘贴已粘贴的数据。

this

任何帮助/建议将不胜感激。 很多这都是使用记录宏

完成的

1 个答案:

答案 0 :(得分:0)

有很多地方可以使用基本方法进行改进,以避免.Select.ActiveCell。似乎还有几个地方暗示了工作表,这些应该是具体的。

这是对第一例程的斩首。

Sub Workbook_Open()
    Dim ordercount As Integer
    ' This routine is called when the workbook is opened.
    With Worksheets("Sheet1")
        ordercount = .Range("A2", .Range("A2").End(xlDown)).Rows.Count  'what does this do?
        'create matchcount column
        .Range("G1") = "Match Count"
        'create batchsheet
        Sheets.Add After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "batches"
        .Range("A1:G1").Copy Destination:=Sheets("batches").Range("A1")
    End With
End Sub

ordercount 似乎没有在这里做任何事情,但在另一个例程中引用。也许这应该是一个公共变量或(更好)传递到第二个例程或在第二个例程中定义。选择G列的所有内容似乎都没有做任何事情,所以我完全删除了它。

请注意,当您在With...End With statement范围内时,所有内容都以句号(.全程)为前缀,例如.Range或{{1将其父级指定为With语句中的父级。

有关远离依赖选择和激活以实现目标的方法的更多信息,请参阅How to avoid using Select in Excel VBA macros