2013-06-21 105 views
0

在Excel 2010中,我有一个VBA函数,它可以搜索工作表并根据三个值找到匹配项。一旦找到匹配,它将返回一个范围,该范围是整行数据。现在我在一个单元格的Excel工作表中调用该函数。使用公式可以将该范围分成单独的单元格。它基本上就像查找行,然后复制粘贴从调用单元开始的单元格。我能想到的唯一的事情就是每个单元保存范围内的小区将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 

组合的高度,宽度和重量是独一无二的。 helper 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 

该函数的工作原理是我可以设置一些调试语句,我正在进行正确的匹配。然而,在主工作表中,我如何获取范围对象并将范围对象的各个元素放入每个单元格中以“修复”错误?

+0

你是否试图将它从一个单元格中返回整行?或者你还想让它这样做? – user2140261

+0

我想要返回整行,但将来自源的单元格放入我的目标中,但是放置在单个单元格中。就像复制/粘贴一样。 – sinDizzy

+0

您需要使用子例程来执行此操作,从工作表调用的工作表函数或UDF无法执行此类操作。 –

回答

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 

希望这有助于大家都需要这样的事..

0

它结束了太复杂,真的不行。我想写一个函数来填充几个单元格。相反,我转而写了一个子程序,它可以遍历所有行并复制/匹配匹配的范围。感谢所有的帮助。

相关问题