- ベストアンサー
Excelの質問です。A列に「●●」を含む、B列のデータを抽出したいです。
今、以下のようなデータが並んでいます。 A列----B列 f-1----笙磬同音 t-1----鬱金香 s-1----水馬 t-2----茉莉花 t-3----方頭鯛 s-2----羊蹄 f-2----蓴羹鱸膾 s-3----時鳥 f-3----群龍無首 s-4----香魚 f-4----狷介固陋 t-4----含羞草 s-5----飫肥 s-6----河骨 f-5----寡聞小見 t-5----雛罌粟 s-7----霽月 t-6----膃肭臍 o-1----霙 f-6----漿酒霍肉 A列にはID、B列には漢字のデータが入ってます。 この中から、「f-*(ワイルドカード)」のデータのみを抽出したいのです(>_<) A列----B列------------C列 f-1----笙磬同音-------笙磬同音 t-1----鬱金香--------- s-1----水馬----------- t-2----茉莉花--------- t-3----方頭鯛--------- s-2----羊蹄----------- f-2----蓴羹鱸膾-------蓴羹鱸膾 s-3----時鳥----------- f-3----群龍無首-------群龍無首 s-4----香魚----------- f-4----狷介固陋-------狷介固陋 t-4----含羞草--------- s-5----飫肥----------- s-6----河骨----------- f-5----寡聞小見-------寡聞小見 t-5----雛罌粟--------- s-7----霽月----------- t-6----膃肭臍--------- o-1----霙------------- f-6----漿酒霍肉-------漿酒霍肉 と、「A列に“f-*”のIDを持つB列のデータ」のみを、C列に抽出し、さらに抽出されなかったC列の空白のセルを削除し、 D列 笙磬同音 蓴羹鱸膾 群龍無首 狷介固陋 寡聞小見 漿酒霍肉 と、連続させて並べたいのです。 一連の過程を素早く処理する方法がありましたら、ご指導いただきたい次第です。 よろしくおねがいします<m(__)m>
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No5 merlionXXです。 先ほどの回答ではC列へのとびとびでの抽出を省略してしまいまいsたが、もしC列も表示が必要であれば以下のようにしてください。 Sub test02() With Sheets("Sheet1") For Each c In .Range(.Range("A1"), .Range("A1").End(xlDown)) If c.Value Like "f-*" Then c.Offset(0, 2).Value = c.Offset(0, 1).Value i = i + 1 .Cells(i, "D").Value = c.Offset(0, 1).Value End If Next End With End Sub
その他の回答 (5)
- merlionXX
- ベストアンサー率48% (1930/4007)
[回答番号:No.3]の場合、次のようにしてもOKです(やや高級?) セル F1 を空白(何も入力しない) セル F2 に式 =LEFT(A2,1)="f" を入力
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
[オートフィルタ]で f で始まるレコードを抽出→可視セルの選択→[コピー]→[貼り付け]
お礼
そうですよね、「可視セルの選択」というのがネックでした、アドバイスありがとうございます(>_<)
- dora_777
- ベストアンサー率64% (57/88)
(1) C1に =IF(LEFT(A1,2)="f-",B1,"") といれてコピーすれば、C1の値は A1の左から2文字が"f-" なら B1、違えば 空("")になります。 これをC列全体にコピーするとC列のできあがりです。 (2)表全体を選んで データ」フィルタ」オートフィルタ として、ドロップダウンリストから(空白以外のセル) を選ぶとC列が空でないところだけ表示されます。 (3)いったんC列を下まで選択します。 このままコピーすると空白行が含まれてしまうので 「可視セルの選択」ボタン(ない場合は下の補足参照) もしくは「Alt」+「;(セミコロン)」で 選択範囲を見えているところだけに限定しておいてから、 コピーします。 (4)表全体を選んで データ」フィルタ」オートフィルタ として、オートフィルタを解除します。 (もしくはオートフィルタのドロップダウンリストから すべて表示、を選びます) (5)D1 を選んでペーストします。 (6)C列に式があるままだとまずい場合 C列を選択してコピー、編集メニューの 「形式を選択してペースト」で「値」のみを ペーストしておきます。 (他にコピーペーストした場合に変な値に変わらずにすみます。) ------------------------------------------------ ※ 補足 「可視セルの選択」ボタンを次のようにして 使えるようにしておきますと便利でしょう。 表示」ツールバー」ユーザ設定の「コマンド」タブで 分類「編集」の「可視セルの選択」のコマンドを ツールバーの好きなところにドラッグします。 ------------------------------------------------ ★ C列はいらないなら、次のようにした方が速いです。 (1)は とばして、 (2)表全体を選んで データ」フィルタ」オートフィルタ として、ドロップダウンリストから(オプション)を を選び、「f-」「から始まる」と条件をいれると、 C列が空でないところだけ表示されます (3)で選ぶのはB列になりますが以下は基本的に同じ (6)は不要になります。
お礼
返信遅くなってすいません(>_<) 何とかできました! (3)~(4)辺りで、少し躓いたのですが、可視セルのみを選択した後「コピー→D1に貼りつけ→オートフィルタを解除」とすると、D列に希望のデータが連続で並びました! 最初「可視セル選択→コピー→オートフィルタを解除→D1に貼りつけ(しようとしたけど出来ない!?)」と、戸惑ってしまいましたが・・・(^_^;) 貴重なご指導ありがとうございます!
お礼
いつも私のExcelの質問に回答していただきありがとうございます! 回答していただいた2つのマクロ、どちらも実行してみたところ、どちらも上手くいきました! こんなに簡単に「データ抽出→並べ替え」が出来るとは・・・マクロを書かせたらmerlionXXさんの右に出るものはいませんね、恐れ入りました(^_^;)