* すぐに回答を!
エクセルで前方一致の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
宜しく御願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
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
----------
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
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)))
下へオートフィル
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Visual Basic(VBA) エクセル 2つの列にある値の完全一致を抜き出すVBA 15 2022/12/15 03:22
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) エクセル関数について教えてください 4 2023/02/05 14:47
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) エクセル 関数について 2 2022/10/10 07:56
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) エクセル 任意の列数で分割する方法 3 2022/07/31 14:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
エクセル 同じ値を探して隣の...
-
エクセル(勝手に太字になる)
-
【VBA】特定列に文字が入ってい...
-
2つのエクセルのデータを同じよ...
-
エクセルで一行毎、一枚づつ自...
-
エクセルで文字が混じった数字...
-
EXCELで 一桁の数値を二桁に
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
VBAで文字列を数値に変換したい
-
Excelで半角の文字を含むセルを...
-
エクセルのセル内の文字の一部...
-
A列がない・・・A列が非表示に...
-
Excel、市から登録している住所...
-
お店に入るために行列に並んで...
-
エクセルで一列おきに空白列を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル 同じ値を探して隣の...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセルで、列の空欄に隣の列...
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
VBAで文字列を数値に変換したい
-
A列がない・・・A列が非表示に...
-
文字列に数字を含むセルを調べたい
-
50人を数回、グループ分けする...
おすすめ情報