• ベストアンサー

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>

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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

dj-s
質問者

お礼

いつも私のExcelの質問に回答していただきありがとうございます! 回答していただいた2つのマクロ、どちらも実行してみたところ、どちらも上手くいきました! こんなに簡単に「データ抽出→並べ替え」が出来るとは・・・マクロを書かせたらmerlionXXさんの右に出るものはいませんね、恐れ入りました(^_^;)

その他の回答 (5)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

マクロでよければ Sub test01() With Sheets("Sheet1") For Each c In .Range(.Range("A1"), .Range("A1").End(xlDown)) If c.Value Like "f-*" Then i = i + 1 .Cells(i, "D").Value = c.Offset(0, 1).Value End If Next End With End Sub でいかがでしょう?

noname#204879
noname#204879
回答No.4

[回答番号:No.3]の場合、次のようにしてもOKです(やや高級?) セル F1 を空白(何も入力しない) セル F2 に式 =LEFT(A2,1)="f" を入力

回答No.3

おまけで「フィルタオプションの設定」を使った方法もついでに覚えておくとよいですよ。(D列だけですが) リスト範囲 $A$1:$B$21 検索条件範囲 $F$1:$F$2 抽出範囲 $D$1 参考まで

dj-s
質問者

お礼

うまくいきました! はぁ~こういうやり方もあったのですね、勉強になります<m(__)m>

noname#204879
noname#204879
回答No.2

[オートフィルタ]で f で始まるレコードを抽出→可視セルの選択→[コピー]→[貼り付け]

dj-s
質問者

お礼

そうですよね、「可視セルの選択」というのがネックでした、アドバイスありがとうございます(>_<)

  • dora_777
  • ベストアンサー率64% (57/88)
回答No.1

(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)は不要になります。

dj-s
質問者

お礼

返信遅くなってすいません(>_<) 何とかできました! (3)~(4)辺りで、少し躓いたのですが、可視セルのみを選択した後「コピー→D1に貼りつけ→オートフィルタを解除」とすると、D列に希望のデータが連続で並びました! 最初「可視セル選択→コピー→オートフィルタを解除→D1に貼りつけ(しようとしたけど出来ない!?)」と、戸惑ってしまいましたが・・・(^_^;) 貴重なご指導ありがとうございます!

関連するQ&A