VLOOKUPは、標準に依存しないように記述します(Excel関数)

前文



ご存じのように、MS EXCELのVLOOKUP機能に関する知識は、モスクワの平均的なアナリストになるのに十分です。 個人がPIVOTに精通している場合、または、たとえば、リストから重複を削除する方法を知っている場合、ハッピーオフィスの世界への扉はすべて、彼の前で大きく開かれています。



もちろん、Habrahabrコミュニティでは、そのような知識は優しさの笑顔を引き起こすだけです。 データを操作することは(もしそうであれば)、旧式のANSI T-SQLでのみ許可されます-92。



しかし、時には厳しい現実により、データ配列の比較が行われます。 同時に、原則として、DBMSにデータを転送する時間がないか、単に非実用的です。 したがって、私は尊敬されるコミュニティに、EXCELでの便利で高速なデータ処理のために互いの「チップ」を共有することを勧めます。 消えないでください...



アンブラ、実際には



VLOOKUP関数(ロシア語版-VLOOKUP)は、さまざまなテーブルで一致するデータを見つける必要がある場合、本当に便利で強力なアシスタントです。 カラシニコフ突撃ライフルのように、簡単かつ確実に機能します。



しかし、これは不運です。比較中にいくつかの追加パラメーターを明確にする必要がある場合があります。 たとえば、多くの通信が存在する可能性があり、それらのすべては一般的に真実ですが、それでもいくつかは「より正確」です。 つまり、比較中に追加の検証を行う必要があります。



一般的な場合、このような追加タスクは何でも構いません。VLOOKUPなどの貴重な機能を制御することは非常に便利です。



このような二重チェックを実行するコードに注目してください。 これは基本的にダブルルックアップです。 「ベース」列の対応が満たされている場合、関数は「修飾」列のパラメーターを検索し、成功した場合、標準のVLOOKUPと同様に結果を返します。



基本的な対応が見つかったが、指定されていない場合、私の目的のために、通知の結果として出力を設定しましたが、もちろん、プロジェクトの必要に応じて関数をやり直すことができます。



His下コード



:

VLOOKUP2my

([Table] , ;

SearchColumnNum [Table], "" ;

SearchValue "" ;

ResultColumnNum [Table], ;

N2 "" ;

N2col [Table], "" )







Function VLOOKUP2my(Table As Range, SearchColumnNum As Integer, SearchValue As Variant, ResultColumnNum As Integer, N2 As Variant, N2col As Integer)

Dim i As Long

For i = 1 To Table.Rows.Count

If UCase(Table.Cells(i, SearchColumnNum)) = UCase(SearchValue) Then

If (UCase(Table.Cells(i, N2col)) = UCase(N2)) Then

VLOOKUP2my = Table.Cells(i, ResultColumnNum)

Exit For

End If

VLOOKUP2my = "Second option not exists"

End If

Next i

End Function








All Articles