0

在 Excel 2010 中,我有一个 VBA 函数,它搜索工作表并根据三个值找到匹配项。一旦找到匹配项,它就会返回一个范围,该范围是一整行数据。现在在我的 Excel 工作表的一个单元格中,我调用了该函数。使用公式可以将该范围拆分为单个单元格。基本上就像找到行,然后从调用单元格开始复制粘贴单元格。我唯一能想到的就是将范围保存在单元格中

A1 = {my range}

然后之后的每个单元格都使用 INDEX 函数,例如

A2 = INDEX(A1, 1,1)
A3 = INDEX(A1, 1,2)
A4 = INDEX(A1, 1,3)

寻找任何建议。我可以发誓有一个我可以使用的非 VBA 函数将一个范围分成单个单元格。

用一个例子编辑:在我的主工作表中,我有大量数据,其中一些有错误。那些我在另一个工作表中查找的错误。

main worksheet
status, height, width, weight, sheet, m, d, z, e
ok, 1, 2, 5, , 100, 5, 7, 5
err, 1, 2, 6, TEMPA 
err, 1, 2, 7, TEMPA
ok, 1, 2, 8, , 102, 7, 9, 8
ok, 1, 2, 9, , 104, 8, 7, 0

高度、宽度和重量的组合是独一无二的。辅助 woksheets 与主 woksheets 相同,但会包含丢失的数据。

TEMPA
ok, 1, 2, 6, , 25, 66, 0, 1
ok, 1, 2, 7, , 99, 7, 2, 6

所以本质上我想在高度、宽度和重量上加入两者,但仅限于那些有错误的人。助手工作表的名称会有所不同,但这是预先计算好的。我编写了代码来获取三个唯一条件,转到辅助工作表,进行匹配,然后返回由匹配行组成的范围对象。

function GetMyRange(h, wd, wt, sht) as Range
   'do the match here
end function

该功能有效,因为我可以设置一些调试语句并且我正在进行正确的匹配。但是回到主工作表中,我如何获取我的范围对象并将范围对象的各个元素放入每个单元格中以“修复”错误?

4

2 回答 2

0

它最终变得过于复杂,而且真的不可行。我想编写一个填充多个单元格的函数。相反,我转而只编写一个子例程,该例程将遍历所有行并复制/粘贴匹配的范围。谢谢大家的帮助。

于 2013-06-24T12:43:46.547 回答
0

不太清楚你的情况,但我有这个..

这将给出将多范围提取到单范围的示例..

Sub SplitRange()
Dim rn As Range
Dim c As Range

Set rn = Range("A1:A8")
For Each c In rn.Cells
    MsgBox StrRange(c.Row, c.Column)
Next
End Sub

Function StrRange(ByVal nRow As Single, ByVal nCol As Single) As String
Dim sC As String
Dim nC, nRest, nDivRes As Integer

sC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nC = Len(sC)

nRest = nCol Mod nC
nDivRes = (nCol - nRest) / nC

If nDivRes > 0 Then StrRange = Mid(sC, nDivRes, 1)
StrRange = StrRange & Mid(sC, nRest, 1) & Format(nRow)
End Function

希望这个帮助和每个需要这样的东西的人..

于 2013-06-21T16:49:56.440 回答