粘贴索引与Excel中的VBA匹配

时间:2016-12-20 01:28:58

标签: excel excel-vba vba

我需要通过VBA在工作表中设置索引/匹配公式并索引整行。 我能做到的唯一方法是选择每个目标行并用.FormulaArray粘贴公式  但这真的很慢。对于快速计算机上的7000行,需要3分钟。  有没有办法立即粘贴?

编辑:

Sheet1
S1  a1  b1  c1
S2  a2  b2  c2
S3  a3  b3  c3
S4  a4  b4  c4

Sheet2
S4 S4   a4  b4  c4
S1 S1   a1  b1  c1
S3 S3   a3  b3  c3
S2 S2   a2  b2  c2

Sheet2在第一列S1-4中有“键”,用于使用索引匹配从Sheet1中提取数据。

所以我的问题是如何一次性使用VBA在Sheet2中添加公式? 我已经设法在for循环中逐行添加它们,但这确实很慢。 这个问题也适用于手工作业。我必须手动选择这4行中的每一行,更改公式并按Ctrl + Shift + Enter。

Edit2:我添加了代码,我最初不想发布,因为它非常混乱,但你可以明白我的意思。这是当前的慢速代码。我可以看到它自己粘贴在7000行上,核心i5需要2-3分钟。是否有一种方法可以编写索引匹配,以便它可以在2维范围内工作,而不是一次只能处理一行?

Dim formulaAy, formulaAy1, formulaAy2 As String
        formulaAy1 = "=INDEX(" & sh2ExtName & "A:" & ConvertToLetter(sh2NCols) & ", MATCH(" & sh1MatchCol
        formulaAy2 = "," & sh2ExtName & sh2MatchCol & ":" & sh2MatchCol & ", 0),0)"
        Dim lastRow As Integer, firstColSecondDoc As String, lastColSecondDoc As String

        firstColSecondDoc = ConvertToLetter(sh1NCols + 1)
        lastRow = sh1RowCount + 1

        For i = 2 To lastRow
            formulaAy = formulaAy1 & i & formulaAy2
            Dim rowRng As String
            rowRng = firstColSecondDoc & i & ":" & lastColSecondDoc & i
            Dim tmpRange As Range
            Set tmpRange = shComparison.Range(rowRng)
            tmpRange.Select
            tmpRange.FormulaArray = formulaAy
        Next
    

0 个答案:

没有答案