• ベストアンサー

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>

  • dj-s
  • お礼率81% (228/280)

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

  • ベストアンサー
  • 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

  • 指定値以外の行データを抽出・転記する為には…

    試行錯誤したのですが、どの方法からもつまづいてしまうので、アドバイス頂ければ助かります。 ◎Y列からE2の年月以外(以前)の行のE列(上4桁を指定数値に変更)・F列・S列・T列のセルを別シートに転記 ◎Y列がE2の年月でC列が遅・再という文字列の行のE列(上4桁を指定数値に変更)・F列・S列・T列のセルを別シートに転記 ソート・関数等も使用し苦心しましたが、どうしても私の知識の範囲を超えた領域に入ってしまい、壁を超えられません。 VBAは学び途中の為、可能であれば関数・マクロ記録で解決出来ればと思います。 難しいようでしたら、VBAのプログラムをご教授下さい。 何卒、宜しくお願い致します。

  • MATLABのデータ抽出についておたずねしたいことがあります。

    MATLABのデータ抽出についておたずねしたいことがあります。 MATLAB初心者ですが、以下のようなプログラムを現在書いています。 f = input('file name? ---> ','s'); m = csvread(f,66,2,[66,2,1089,3]); time=(0:0.002:2.046); t=reshape(time,1024,1); current=m(:,1)*1000; voltage=m(:,2)*10; m2=[t current voltage]; a=m2(1,2); b=m2(2:40,2); if a>max(b); g=a; end for I=2:1024; for J=1:1024; for K=39+I; if K>1024; K=1024; end c=m2(I,2); d=m2(J:I-1,2); e=m2(I+1:K,2); if c>max(e)&&c>max(d); g=c; else end end end end plotyy(t,current,t,voltage) ylim([0,700]) ifの条件を満たしたときに、m2の2列目の値だけでなく条件を満たしたその行の3列全てのデータを抽出し、条件を満たした行だけの新たな行列を作りたいのですが、どのような命令を書けばよいでしょうか。 お手数をおかけしますが、ご教授よろしくお願いいたします。

  • エクセルのA列とB列にあるデーターのうち、同じデーターを抽出する

     A列  B列 a1111 z2222 *A列にもB列にも500件ほどの a2222 y3333  メールアドレスが入っています。c3333 a1111  ダブっているアドレスもあります。  ・   ・   ダブっているアドレスだけを抽出  ・   ・   したいのですが?  ・   ・   宜しくお願いします。  

  • エクセルデータの並び替え

    A列に 1 2 3 4 5 6 7 ・・・・・ B列に a b c d e f g h i j k l ・・・・ と文字列があります。 これを C列に 5つずつデータをセットにして並べたいのです。 A列    B列           C列 1     a      1 a   2 b  3 c  4 d  5 e 2     b      6 f   7 g  8 h  9 i  10 j 3     c      11 k  12 l  13 m  14 n  15 o 4     d      16 p   17 q  18 r  19 s  20 t 5     e      以下同じように続く 6     f 7     g 8     h 9     i 10     j 11     k 実際のC列のデータは トマト tomato  ネコ cat   机 desk  いす chair  かばん  bag  のようにしたいのです。 関数の扱いがわからずに苦戦しています。どうぞ、よろしくお願いします。

  • データ抽出→グラフ作成

    次の様な書類を作成しています。 1  A   B  C   D E  F   G  H  I J   K  L  M 2 1-1 5000 4500 - -  2-1 5000 4800 - - 3-1 5000 5000 3 1-2 5000 4900 - -  2-2 5000 4700 - - 3-2 5000 5100 4  -  -  -  - -  2-3 5000 5000 - -  -  -  - 5  -  -  -  - -  -  -  -  - -  -  -  - (-は空白セルです) この表から値の入っている数値を抜き出して行5に折れ線グラフを作成したいと思っています。(ちなみにデータの数はその都度変わります) 現在は、前回作成したファイルを修正する形で使用しており、A列~M列にデータを入力した後、グラフの元データとして値の入っているデータを手作業でコピーして列R2・S2・T2から下に一つにまとめ、あとはグラフの書式で元データの数を調整しています。 そしてこのデータからグラフまでの表が下に5つほど連続であります。 この一連の流れを自動でできないものでしょうか? このファイルを使用する人は数人おり、そこそこエクセルを使える人から初心者の方までさまざまです。 出来れば、値を入力する度に自動的に変わっていくのが一番の希望ですが、無理な場合、ボタン一つで一連の流れが実行できるようにできないかと思っています。 自分でもいろいろ調べて考えてみたのですが、 グラフのデータ範囲はOFFSET関数を使用して自動的に変化させることができたのですが、 データの移行が、R列に =IF(ROW()-1>COUNTIF($A$2:$A$5,"<>"),"",INDEX(($A$1:$A$5),SMALL(IF($A$2:$A$5="","",ROW($A$2:$A$5)),ROW()-1))) S列に =IF(R1="","",VLOOKUP(R1,A2:M5,2,0)) T列に =IF(R1="","",VLOOKUP(R1,A2:M5,3,0)) これでA列~C列までは出来たのですが、続けてF列~H列、K列~M列のデータの抽出する方法がわからずとまってしまってます。 宜しくお願いします。

  • MS-excel 10列毎に改行したい

    MS-excel2003で、A1~W1までデータが横並びに入力されています。 これを10列毎に改行したいのですが、マクロでどのようにやればよいでしょうか? 図解すると、、 A1 B1 C1 D1 F1 G1 H1・・・・ のデータを A1 B1 C1 D1 F1 G1 H1 I1 J1 K1 L1 M1 N1 O1 P1 Q1 R1 S1 T1 U1 V1 W1・・・・・・ と したいのです。 これをマクロで行いたいのですが、ご教授願えませんか。

  • エクセルのグラフで2列の積み上げ棒

    こんにちは、お世話になります。 どなたかご教授をお願いいたします。 下記のように、各月において項目が3つあり、4月では項目1のA1、A2およびD1、D2を2列の積み上げ棒にして、同時に項目3を折れ線グラフに設定したいと思っています。       4月     5月     6月 項目1  A1,A2  B1,B2  C1,C2 項目2  D1,D2  E1,E2  F1,F2 項目3   S      T      R  X軸は年月です。Y軸は項目1~3ですが、金額なので単位は円です。  各月、2列の積み上げ棒グラフと折れ線グラフが表示されるような設定はできるでしょうか?  いろいろやってみたのですが、できずにいて、困っています。よろしくお願いします。

  • エクセルのデータ処理で困っています

    あまりエクセル関数に詳しくないので困っております。 2点ほど質問があるのですが… 1. B1セルから横に    [A], [B], [C] , [D] , [E] , [F] [1]      , mikan, ichigo , - , mikan , - [2]      , - , ichigo , ichigo , ichigo, -    と入っています。 (桁がずれて表示されてしまうので、セルの区切りにカンマを入れました。見えづらくてすみません。以下の表も同様です)   この時、各行毎に、入力されているデータ(ハイフンは除く)が同じものであるかどうかを判定し、同じであれば●を、違うものが混じっていれば×を、[A]列に入力したいのです。  結果としては[A1]が×、[A2]が●となればよいのですが…  if(B1=C1=D1=E1=F1,"●","×")と入れてみましたが、"-"をどう処理すればよいのかわからず、お手上げです。 2. B1セルから横に   [A], [B], [C], [D] [1]     Q05 ,   mikan , orange [2]     P05 ,   mikan , orange [3]     S12,   りんご,   apple [4]     R09,   ぶどう,   grape [5]     P10 ,   ringo, apple [6]     S16,   りんご,   apple [7]     P30 ,   みかん,  orange [8]     T42 , ミカン,  orange と入っています。  [A]列に重複の有る無しを入力したいのですが、条件があり、  まず、[D]列が同じものであること、  次に、[B]列の数字部分が等しくないものについて、  上から順番に、重複1、重複2,…と[A]列にいれていきたいのです。  [A]列にはすべて同じ式を入れますが、重複でないセルは"" になるように設定していただくと助かります。 結果として、      [A], [B], [C], [D] [1] 重複1, Q05 , mikan, orange [2]   ,  P05, mikan, orange [3] 重複2, S12, りんご,   apple [4]   ,   R09, ぶどう,   grape [5] 重複2, P10 , ringo, apple [6] 重複2, S16,   りんご,   apple [7] 重複1, P30 , みかん,  orange [8] 重複1, T42, ミカン,  orange   このようになれば、と思っています。  これについては、頭の中が混乱して、お手上げ状態です。   未熟者なので、関数でご教授いただければありがたいですが、もし無理なようであればVBA でも… よろしくお願いいたします。

  • エクセルでA列とB列の差分を抽出

    エクセルでA列にはあるがB列にはない項目を抽出するにはどうしたらよいでしょうか。 下の例だと、C列あたりに、山本、川田を抽出したいのですが…… A列にはB列のデータがすべて含まれています。 A列は10月と11月のデータで、B列は10月のデータです。 A列   B列 山田  山田 山本  川上 川田 川上

  • エクセル スリープ復帰後に列表示の不具合が

    エクセルで請求書を作っているのですが、スリープ復帰後、さっきまで普通に表示されていたワークシートが列表示だけ表示されなくなってしまうことが時々起こります。つまりA B C D E F .....と順番に表示されていたワークシートが、いきなりR S T U...といった具合に本来表示されていなければならない部分が隠れてしまう様に列が非表示になってしまいます。(ファイル全体です。) 初めて症状が出たときは手動でいちいち列幅変更と非表示部分を表示に直していたのですが、やり切れなくなってきました。どなたか原因及び対処方法をご指導下さい。よろしくお願いします。

    • 締切済み
    • Mac

専門家に質問してみよう