質問です。
説明がわかりにくく申し訳ありません。
エクセルのシート1にC:C列にある文字列を抽出し、その文字列の中から特定の文字列があればシート2の表から日本語を返したい。
例:シート1
A B C D
1 aa/bbbb/ 5
2 ccc/ddd/ 8
3 ee/ff/ 0
4 gggg/hhhhh/ 6
シート2
A B C D
1 bbbb リンゴ
2 ddd みかん
3 ff いちご
4 hhhhh ぶどう
シート3
A B C D
1 リンゴ 5
2 みかん 8
3 いちご 0
4 ぶどう 6
シート3に集計表を作りたいのですが、シート1のc:c列にbbbbがあれば
リンゴにbbbbが含まれる文字列の隣のセルの数値を返したいのです。
※シート3のA列のリンゴ・みかんなどは元から固定して入力済みです。
シート1に外部からのデータを張り付け特定の文字列が含まれる隣のセルの数値を取得したいです。
説明が大変下手で申し訳ありませんが、どうぞよろしくお願いします。
No.5ベストアンサー
- 回答日時:
No.4です。
Sheet1の配置が間違っていました。
↓のような配置なのですね?
前回のコードは消去し、↓のコードに変更してください。
Sub Sample2()
Dim i As Long, c As Range, r As Range
Dim wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
Application.ScreenUpdating = False
With Worksheets("Sheet3")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS2.Range("B:B").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Set r = wS1.Range("C:C").Find(what:=c.Offset(, -1), LookIn:=xlValues, lookat:=xlPart)
If Not r Is Nothing Then
.Cells(i, "B") = r.Offset(, 1)
End If
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
今度はどうでしょうか?m(_ _)m
tom04 様
ありがとうございます。
希望の形にすることが出来ました。
下手くそな説明にも関わらず、ご理解頂きありがとうございました。
また、丁寧なご説明も感謝いたします。
また、ほかの方もご協力いただきまして誠にありがとうございました。
No.4
- 回答日時:
こんにちは!
VBAになりますが、一例です。
↓の画像のような配置になっているという前提です。
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から//
Dim i As Long, c As Range, r As Range, myAry As Variant
Dim wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
Application.ScreenUpdating = False
With Worksheets("Sheet3")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS2.Range("B:B").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Set r = wS1.Range("C:C").Find(what:=c.Offset(, -1), LookIn:=xlValues, lookat:=xlPart)
If Not r Is Nothing Then
myAry = Split(r, "/")
.Cells(i, "B") = myAry(UBound(myAry))
End If
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub 'この行まで//
※ 各シート名は実際のシート名にしてください。m(_ _)m
No.3
- 回答日時:
VLOOKUP関数
元データのシート(Sheet1)
A B C D
1 - - black/dog 1匹
2 - - white/cat 3匹
3 - - yellow/bird 6羽
4 - - blue/bird 2羽
5 - - hot/dog 3匹
6 - - fish 1尾
変換表(Sheet2)
A B C D
1 dog 犬
2 cat 猫
3 bird 鳥
変換して表示するシート(Sheet3)
A B C D
1 犬 1匹
2 猫 3匹
3 鳥 6羽
4 鳥 2羽
5 犬 3匹
6 fish 1尾 ←変換できなかった例
こんな感じにしたいのでしょうか。
No.1に続いてもう一つアドバイス。
元データのシートのC列に入る文字は必ずスラッシュ(/)で区切られ、その区切られた文字を検索するのであれば、
「区切り位置」機能でセルを分けることを強く勧めます。
そうすることで後の処理が簡単になります。
再三のご回答ありがとうございます。
まさにおっしゃる通りでございます。
一度区切る事も考えたのですが、c列の文字列が
/プードル/柴犬/犬
/ゴールデンレトリバー/パグ/ポメラニアン/犬/
/三毛猫/黒猫/猫
など、スラッシュの区切り数がそれぞれ異なる為諦めました。
※上記の犬や猫であれば、名前が重複しますが、実際は重複文字はありません。
No.2
- 回答日時:
要領を得ない質問に予測で回答していると 質問者の文章力がいつまで経っ
ても上がらない気がするので 本来は返事を待つべきなんでしょうけど
=SUMIF(Sheet1!C:C,"*"&INDEX(Sheet2!A:A,MATCH(A1,Sheet2!B:B,0))&"*",Sheet1!D:D)
違うようなら もうちょっと順序立てて補足し直して下さい。
粗末な文面で申し訳ございません。
①エクセルのSheet1に外部からのデータをAlt+Aで全選択し、値のみで貼付けを行います。
貼付けた結果からSheet1のC列に抽出したデータが約1万行、D列にそのデータの値が同数あります。
/c/apple/ 16(2.44%)
/c/orange/ 12(1.83%)
/c/strawberry/ 10(1.53%)
/c/grape/ 9(1.37%)
②上記のデータから/apple/や/orange/を含む文字列をまず日本語に返したいです。
apple=りんご
orange=みかん など
③上記で取得したデータを
りんご 16(2.44%)
みかん 12(1.83%)
いちご 10(1.53%)
と、まとめたいです。
私がエクセルを理解していない為、伝わらず申し訳ございません。
No.1
- 回答日時:
>シート1にC:C列にある文字列を抽出し
具体的にどういうことでしょう。
どのシートのC列の値をSheet1へ何と比較して抽出するのかを明確にしましょう。
>その文字列の中から特定の文字列があればシート2の表から日本語を返したい。
これも具体的にどうい事でしょう。
どのような対比になっている表なのかを明確にしてください。
・・・
”エムズ69”さんは数学がとても苦手だったのではないでしょうか。
順序立てて説明することが得意ではないようです。
説明が下手と自身で仰っていますが、この点を直すことで自身の考えをまとめ問題点を明確にすることができ、自己解決に導くことができます。
とりあえず、
・VLOOKUP関数の使い方と、MATCH関数とINDEX関数の組み合わせて使う方法の違い。(値の抽出)
・FIND関数とSEARCH関数の違い。(文字列中の検索)
・別シートのセルの参照方法。
の3つを調べて使いこなせるようにしましょう。
ご指摘ありがとうございます。
エクセルのSheet1に外部からのデータをAlt+Aで全選択し、値のみで貼付けを行います。
貼付けた結果からSheet1のC列に抽出したデータが約1万行あります。
上記のデータから特定の文字列を含む値と、その横のセルの値を抽出したいです。
また、Sheet1のC列にある特定の値が全て英数の為、まずはbbbbはリンゴ、dddはみかんなど日本語に変換し、且つリンゴ 5 みかん 8と導きたいです。
bbbb=りんご、ddd=みかん
など、決まっております。
ご指摘の通り数学が苦手且つ、パソコンはもっと苦手の為読みずらい文面になっている為大変申し訳ございません。
どうしても仕事で必要な為初めてご質問をさせて頂きました。
もし宜しければご回答を頂けるとありがたいです。
まだまだ不明点もあるかと思いますので、よろしければ質問してください。
それではよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) Excelの文字列を転記したいのですが。 2 2022/09/30 12:09
- Excel(エクセル) エクセル関数について 8 2023/06/28 17:04
- Excel(エクセル) Excelのリストにある文字を含むセルを、複数の色で色付けしたいです 2 2022/08/11 17:39
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スプレッドシートの関数VLOOKUP...
-
Excelで同じシートのコピーを一...
-
EXCEL:同じセルへどんどん足し...
-
エクセルでファイルを開いたと...
-
前の(左隣の)シートを連続参...
-
エクセルの複数シートの保護を...
-
シートの保護のあとセルの列、...
-
VBA セルの値と同じ名前のシー...
-
別シート参照のセルをシート毎...
-
エクセルVBAでパスの¥マークに...
-
エクセルで前のシートを連続参...
-
EXCELで1ヶ月分の連続した日付...
-
EXCELで同一フォーマットのシー...
-
エクセルでファイル保存時に複...
-
複数シートの特定の位置に連番...
-
エクセルのシート名をリスト化...
-
シート番号からシート名を取得する
-
複数のピボットを同じフィルタ...
-
シートを任意の日付で自動で作...
-
エクセルで前シートを参照して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルVBAでパスの¥マークに...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルで前のシートを連続参...
-
前の(左隣の)シートを連続参...
-
EXCELで同一フォーマットのシー...
-
VBAでシートコピー後、シート名...
-
Excel 連番を入力する方法
-
エクセル 計算式も入っていない...
-
エクセルで前シートを参照して...
-
エクセルでシート名を自動入力...
-
Accessのスプレッドシートエク...
-
複数シートの特定の位置に連番...
-
エクセルのシート名をリスト化...
おすすめ情報