2012-01-27 18 views
0

を使用したとき、私は何をするsupossedは何#値!マクロ

Public Function LastVersionOwned(rCol As Range, versionOwned As Range) As Range 
    Set LastVersionOwned = Application.WorksheetFunction.Lookup(2, 1/(rCol = rCol.Find("*", rCol.Cells(1), , , , xlPrevious)), versionOwned) 
End Function 

をこのVBコードを使用してい範囲で最後の非空の行を見つけ、その行のヘッダを取得するには、その値を使用しますが、時にされます私はそれを使用して、#VALUEを返します! rColは範囲(空でない最後の値、たとえばC12:F12を取得したい行のリスト)であり、versionOwnedはテーブルのヘッダーです(範囲も静的C11:F11)

この

Public Function LastVersionOwned(rCol As Range) As Range 
    Set LastVersionOwned rCol.Find("*", rCol.Cells(1), , , , xlPrevious) 
End Function 

そして、私は=LOOKUP(2,1/(C12:F12=LastVersionOwened(C12:F12)),C$11:F$11) を行うExcelでそれが仕事のようそれ、私はこのバグを修正することができますどのように任意のアイデア?

おかげ

+0

に合った場合、私はあなたがやろうとしているかについて困惑している知ってみましょう...あなたのための作業の代替を作ってみました。例:列Aの最後の空のセルを見つけます。A100としましょう。次に、その値を使って正確に何をしますか? 「行のヘッダーを取得する」とはどういう意味ですか? – JimmyPena

+0

私は行の最後の空でないセルを見つけようとしています。 (範囲A2:F2では最後の空でないセルはC:2である可能性があります)セルC2にはヘッダがあります。A1:F1の行のヘッダがasdfghであるとしましょう。最後の空でないセルがC2であればC1ヘッダーはD – user1112251

答えて

2

私はこの問題は、あなたがあなたの式の「アレイへのアレイ」を比較し、あなたが実際にRangeRangeを比較するために可能ではないVBAで同じことを、やろうとしていることだと思います。そして実際にVBAの 'Array to Array'を比較するのはちょっと長くなるでしょう。だから私は

Public Function LastVersionOwned(rCol As Range, versionOwned As Range) 
    LastVersionOwned = Application.WorksheetFunction _ 
     .Lookup(rCol(1, rCol.Columns.Count).End(xlToLeft).Value, rCol, versionOwned) 
End Function 

は私はこれがあなたのニーズ

+0

になります。ありがとうございました!私は私に多くの助け:) – user1112251