我需要通过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