• 締切済み

エクセルで前方一致のVlookupはできませんか

* すぐに回答を! エクセルで前方一致のVlookupのような関数はないでしょうか。 具体的には、A列とB列にデータがあり、A列のデータの文頭部分の文字列が B列のデータのどれかと一致した場合に、C列に一致したB列のデータを返したいです。 データの行数が非常に多い(3,4万行)であるため、できるだけ動作の軽い 関数であればなお助かります。 A          B           C zzzfewfe      dadaf         zzzf dadaf3233      a11111k        dadaf aabbbb-fefe3     zzzf         aabbbb a11111k33r3      aabbbb       a11111k 宜しく御願い致します。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 私なら、並べ替えをして比較しているのではないかと思いました。 3~4万行ですから、マクロでも、総当たり制では無理があると思います。 そこで、配列に入れてみました。なるべくスピードに心がけて作ってみました。 '標準モジュール Sub Test1()   Dim i As Long, j As Integer   Dim rng As Range   Dim rng2 As Range   Dim ar As Variant   Dim ar2() As String   Set rng = Range("A1", Range("A65536").End(xlUp))   Set rng2 = rng.Offset(, 1)   ar = Application.Transpose(rng.Value)   ReDim ar2(UBound(ar))   For i = LBound(ar) To UBound(ar)     For j = Len(ar(i)) To 1 Step -1       If Application.CountIf(rng2, Left(ar(i), j)) Then         ar2(i - 1) = Left(ar(i), j)         Exit For       End If     Next j   Next   '書き出し場所   Range("C1").Resize(UBound(ar2())).Value = Application.Transpose(ar2())   Set rng2 = Nothing   Set rng = Nothing End Sub

回答No.3

数式は少し重そうですが、文字数が例示程度なら D1セルに =MATCH(LEFT($A1,COLUMN(A1)),$B:$B,0) 右へ下へオートフィル(B列の文字数の最大まで 例示の場合 7文字なのでJ列まで) 文字数はLEN関数で調べます C1セルに =IF(ISNA(LOOKUP(2^8,D1:J1)),"",INDEX(B:B,LOOKUP(2^8,D1:J1))) 下へオートフィル

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

関数よりマクロの方が簡単で速いと思う 一例です Sub Macro1() Dim i For i = 1 To Range("b65536").End(xlUp).Row Range("a1", Range("a65536").End(xlUp)). _ Find(What:=Cells(i, 2).Value, LookIn:=xlValues, LookAt:=xlPart) _ .Offset(0, 2).Value = Cells(i, 2).Value Next i End Sub

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

B列の文字数は不定なんですよね 関数では無理そうです VBAならこんな↓感じです --------- Sub TS()  al = 1  Do   bl = 1   Do    mjl = Len(Cells(bl, 2))    If Left(Cells(al, 1), mjl) = Cells(bl, 2) Then     Cells(al, 3) = Cells(bl, 2)     Exit Do    End If    bl = bl + 1   Loop Until Cells(bl, 2) = ""   al = al + 1  Loop Until Cells(al, 1) = "" End Sub ----------

tete3398
質問者

お礼

おっしゃるとおり文字数は不定です。 やはりVBAを使わないと駄目そうなんですね。 有難うございます。

関連するQ&A