将Excel范围拆分为单个单元格

时间:2013-06-21 01:43:10

标签: excel vba range cells

在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与main相同,但会丢失数据。

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

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

2 个答案:

答案 0 :(得分: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

希望这个帮助以及每个需要这样的人......

答案 1 :(得分:0)

它最终过于复杂,真的无法做到。我想编写一个可以填充多个单元格的函数。相反,我切换到只编写一个子程序,它将遍历所有行并复制/匹配匹配的范围。谢谢大家的帮助。