2017-10-25 5 views
0

したがって、2014-2017年の異なる地域と対応する値の表があります。すべての地域で2017年の価値があるわけではありませんが、WorksheetFunction.VLookup(...)を作成すると、問題のセルが空の場合は0が返されます。Excel vba:Vlookupがゼロで空白を代入すると、VLookupが空の値を返すかどうかを確認します

与えられた領域のセルが空であれば私の特別な値(-1)を入れる必要がありますが、実際のゼロとゼロを区別することはできませんVlookupは空の値の代わりに戻ります。どうすればいい?

EDIT:私は結果のセルのアドレスを知らないので、私は、個々のセルにIsEmptyを使用することはできません - それにもかかわらず私のループサイクルでも、最初の引数のアドレスを知らなくても。私が持っているのは結果だけです。本当の、あるいは偽のゼロです。

+0

'IsEmpty'関数を使って、セルが空であるかどうかを調べることができます。 –

+0

@Egan Wolf質問を編集しました。 – Ans

+1

ルックアップセルが空の場合、 'WorksheetFunction.VLookup'は0を返しません。結果を数値変数に格納しようとすると、0に変換されます。 – Rory

答えて

0

this answer

=if(len(vlookup(a2,f$2:g$20,2))=0,"",vlookup(a2,f$2:g$20,2))

トリックは、任意のチェックを使用することですresult = VLookup(...)ではなく、VLookup自体で機能しますそれで空虚をゼロに変える時間がありました。

0

私はIFを使用しているとは思いますが、ISEmptyは問題を解決します。

使用WorksheetFunction.Match VLOOKUPは、空のセルを返すかどうかをチェックすることができ、セルアドレス

currentCell= the cell in which you'll be putting value 
concernedCell=The cell which can be empty 

If(Isempty(concernedCell)) Then 
currentCell.value=-1 
Else 
currentCell.value=concernedCell.value 
+0

'currentCell'のアドレスを知らないので無駄です。私はVlookupの結果だけで遊ぶことができます。 – Ans

+1

あなたはコードを共有してください。ポイントは、あなたはどこかでvlookupの結果を入れています。それはアドレスを与えなければなりません。それとも、私は何かが欠けているかもしれません。コードを共有することは大きな助けになるでしょう。 –

0

を取得します。 =IF(VLOOKUP(K9,$F$2:$G$6,2,FALSE)="",-1,VLOOKUP(K9,$F$2:$G$6,2,FALSE))

VBAの例として使用できます:あなたが使用できるワークシートの数式として

勤務

Public Function MyVlookup(lookup_value, table_array As Range, col_index_num As Long, Optional range_lookup As Boolean = False) As Variant 

    Dim ReturnValue As Variant 

    ReturnValue = WorksheetFunction.VLookup(lookup_value, table_array, col_index_num, range_lookup) 

    If IsEmpty(ReturnValue) Then 
     MyVlookup = -1 
    Else 
     MyVlookup = ReturnValue 
    End If 

End Function 
関連する問題