No.2ベストアンサー
- 回答日時:
こんな感じでしょうか?
Sub testセレクトケース()
Dim val As Variant
Dim r As Range
For Each r In Range("B5:B50")
Select Case r.Value
Case "AAA": val = 10
Case "BBB": val = 20
Case "CCC": val = 30
End Select
r.Offset(, 1).Value = val
Next
End Sub
ご回答くださいましてありがとうございます。
やりたいことを完璧に再現してくださいました!!
あとは、
セルB5が空白又は条件候補以外の文字列が入力されているときに
セルC5に???を出力させる方法と
セルB5が50まで固定の処理ではなくて、B列に入力されている分
(例えばセルB30までならセルC30まで出力、B40までならC40まで出力)
だけ処理する方法を探していきます。
No.5
- 回答日時:
ANo.1です。
検索条件とその値がE列・F列の1行目からあるとします。
Sub test()
Dim Dic As Object
Dim r As Range
Dim i As Long
Dim v As Variant, vv As Variant
Set Dic = CreateObject("Scripting.Dictionary")
With Worksheets("Sheet1")
v = .Range(.Range("E1"), .Cells(Rows.Count, 6).End(xlUp)).Value
For i = 1 To UBound(v, 1)
Dic(v(i, 1)) = v(i, 2)
Next
For Each r In .Range("B5", .Cells(Rows.Count, 2).End(xlUp))
If Dic.Exists(r.Value) Then
vv = Dic(r.Value)
Else
vv = "???"
End If
r.Offset(, 1).Value = vv
Next
End With
Set Dic = Nothing
Erase v
End Sub
VLOOKUP関数の身代わりとして下さい。。。
ご回答ありがとうございます。
提示していただいたマクロですが、当方のスキル不足により
十分に活用することが出来ず大変申し訳なく思っています。
今回質問させていただいた疑問点は、他の方の回答により
無事解決することが出来ました。
今後、私自身のスキルアップを図り、別の機会にて活用させて
いただきたく思います。
丁寧にご指導いただきまして誠にありがとうございました。
No.4
- 回答日時:
こういう問題は、IF文的発想でやることを、経験をつんで、早く脱却しないと進歩は無い。
IF
CASE(IFの亜種)
VLOOKUPやMATCH(VBAでの関数利用)
表引き
Findメソッド
レコードの検索構造化(本質問には関係ないが、レコードの探索)
SQL(本質問には関係ないが)
などを思いつく。
ーー
VLOOKUPの例
例データ E1:F3
AAA10
BBB20
CCC30
ーー
B5:C11
AAA10
CCC30
BBB20
AAA10
BBB20
AAA10
CCC30
コード
Sub test01()
d = Range("B65536").End(xlUp).Row
For i = 5 To d
Cells(i, "C") = WorksheetFunction.VLookup(Cells(i, "B"), Range("E1:F3"), 2, False)
Next i
End Sub
MATCH関数の場合、上記のWorksheetFunction.VLookupの行が
x = WorksheetFunction.Match(Cells(i, "B"), Range("E1:E3"), 0)
Cells(i, "C") = Cells(x, "F")
ーー
表引きは
Sub test02()
d = Range("B65536").End(xlUp).Row
For i = 5 To d
For j = 1 To 3
If Cells(i, "B") = Cells(j, "E") Then
Cells(i, "C") = Cells(j, "F")
GoTo p1
End If
Next j
Cells(i, "C") = "Not Found"
p1:
Next i
End Sub
のようなもの。
ご回答ありがとうございます。
提示していただいたマクロですが、当方のスキル不足により
十分に活用することが出来ず大変申し訳なく思っています。
今回質問させていただいた疑問点は、他の方の回答により
無事解決することが出来ました。
今後、私自身のスキルアップを図り、別の機会にて活用させて
いただきたく思います。
丁寧にご指導いただきまして誠にありがとうございました。
No.3
- 回答日時:
ANo.1です。
ちなみにVLOOKUP関数案は、表を作成しておけばデータの変更はコードではなくシート上の表でできるので、
多いのなら楽かと思いまして。
数式を入れるのが何でしたらVBAで表を参照すれば宜しいかと。
未熟者の浅知恵程度として下さい。
No.1
- 回答日時:
>条件となる文字列(AAA、BBB、CCC...)があり、
条件は3つなのですか、それとも多くて固定?or変動?
多いのなら表を作成してVLOOKUP関数でやるとか。
条件は500以上あり、WEBから表を読み込んで自動で表作成しています。
作成した表にはAAA,BBB,CCCと明記されておらず、
VLOOKUP関数では表から値をうまく抽出できないと思い、
今回は Select Caseで表から値を抽出する方法を採りました。
VLOOKUP関数でも代用可能でしたら、別の方法も試してみたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 指定列最終行までのスペースを改行するVBAについて 2 2022/06/01 19:50
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル マクロ オートフィ...
-
[EXCEL]ボタン押す→時刻が表に...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
エクセルマクロで偶数行(又は...
-
電話番号の入力方式が違うデー...
-
エクセルVBA 最終行を選んで並...
-
エクセル 上下で列幅を変えるには
-
Excel 時刻の並び替え
-
エクセルのマクロで意図しない...
-
Excel2007で、指定範囲の行高さ...
-
EXCELで最後の行を固定
-
結合されたセルをプルダウンの...
-
エクセル マクロで数値が変っ...
-
Excel ウインドウ枠の固定をす...
-
AのセルとB行を比較して、一致...
-
Excel グラフのプロットからデ...
-
エクセルVBAのEntireRow.Hidden...
-
EXCEL 「最後のセル」のリセット
-
エクセルVBA:リストに登録した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
結合されたセルをプルダウンの...
-
[EXCEL]ボタン押す→時刻が表に...
-
excel 小さすぎて見えないセル...
-
AのセルとB行を比較して、一致...
-
エクセル マクロで数値が変っ...
-
エクセル 上下で列幅を変えるには
-
excelのデータで色つき行の抽出...
-
Excel グラフのプロットからデ...
-
エクセル2016で時間を入力して...
-
VBAで色の付いているセルの行削除
-
特定の文字がある行以外を削除...
-
連続データが入った行の一番右...
-
エクセルVBA 最終行を選んで並...
-
エクセルのセルに指定画像(.jpg...
-
エクセルで昨日までの日付デー...
-
エクセルマクロで偶数行(又は...
-
A1に入力された文字列と同じ文...
おすすめ情報