前文
ご存じのように、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