2013-06-21 104 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

它結束了太複雜,真的不行。我想寫一個函數來填充幾個單元格。相反,我轉而寫了一個子程序,它可以遍歷所有行並複製/匹配匹配的範圍。感謝所有的幫助。

相關問題