• ベストアンサー

excel 関数 表示されているセルのみ抜き出す

関数で表示されているセルだけ抜き出しを行いたいのですが、 (フィルタではなく)   A  B C D 1 2 2 2 4 3 5 4 4 8 5 5 6  7 8 8 10 11 A列のように、とびとびになっているものを、B列に表示されているものだけ抜き出したいのですが、 どうすればよろしいでしょうか。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

C1に =IF(ROW(B1)>COUNTA(B:B),"",INDEX(A:A,SMALL(IF($B$1:$B$100<>"",ROW($B$1:$B$100)),ROW(B1)))) と式を記入してコントロールキーとシフトキーを押しながらEnterで入力し,下向けにコピーします。

KAZA7272
質問者

お礼

こちらの式でできました。 ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

回答が出ているが、VBAに夜質問ですか? 操作でないのはわかるが、VBAかんすうは経験なく、関数での会報ではないのか。 関数での抜き出し問題は、式が複雑になって難しいのだ。初心者では絶対思いつかない式になっている。 ーー >B列に表示されているものだけ抜き出・・ は判りにくい。結果がどうなれば良いのか例でも挙げるべきだ。手を抜かないこと。他人にはわかりにくいのだ。 ーーー 推測で回答を挙げておく。 例データ Sheet1 A列  B列      C列 2   <-第2行目から 2 4 1 5 4 8 2 5 8 C2の式は =IF(AND(A2<>"",B2<>""),MAX($C$1:C1)+1,"") 下方向に式を複写。 結果 上記C列。条件に合う行に上行から連番をフッタ(ここは作業列) ーー Sheet2 のA2に A2に =INDEX(Sheet1!$A$1:$B$10,MATCH(ROW()-1,Sheet1!$C$1:$C$10,0),COLUMN()) B2に横方向に式複写 A2:B2の式をあって方向に式複写。 結果 Sheet2 2 4 4 8 #N/A #N/A imogas方式。作業列を使うという点があるが。i Googleで「imogasi方式」で照会すれば、複雑な関数式での回答が出ているのが判る。 ーーー VBAでやれば上の行から条件に合うか判定して条件に合うものをSheet2にでも貼り付ければ仕舞いで、難しい理屈を考えなくて済む。 ーー 関数の超熟練者でなければ、出来ればエクセルではフィルタ(操作)でやるのが、予定されたやり方と思う。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

どこに抜き出したいのかが書かれていなかったので 別のシートに抜き出すようにしています。(Sheet1からSheet2へ) Sub Macro1() Set WS1 = Sheets("Sheet1") 'ここを変更 Set WS2 = Sheets("Sheet2") 'ここを変更 WS2.Cells.ClearContents COUNTER = 0 For INP = 1 To WS1.Cells(Rows.Count, 1).End(xlUp).Row If WS1.Cells(INP, 2) <> "" Then WS1.Rows(INP).Copy COUNTER = COUNTER + 1 WS2.Rows(COUNTER).PasteSpecial Paste:=xlPasteValues End If Next INP Application.CutCopyMode = False End Sub シート名は適宜変更して下さい。 データが増え続けるのであれは問題ないのですが、減る事がある場合 前のデータが残ってしまうので WS2.Cells.ClearContentsでSheet2の内容を消去しています。 不要であれば削除してください。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

4と8ですか? どこに抜き出すのですか? A列がとびとびなのと今回の質問内容と何か関係があるのですか? A列の中からB列にある4と8に一致したものを抜き出す?? その場合の解答は4と8だからA列から抜き出すもなにもB列見るだけで分かるし… 手を抜かずに、ちゃんと具体的に結果がこうなりたいとか書いてみたらいかがでしょう。

関連するQ&A

  • Excel フィルタした値をセルに表示する関数

    図のような表をつくり、表にはテーブル書式を設定しています。 B列で社名でフィルターをかけると、C列、D列の数値の集計は、SUBTOTAL関数(109)で行っており、フィルターをかけた最終行にその集計数値が表示されます(下部画像のようになる)。 ついでに、B列の最終行に、フィルターをかけた値(ここでは文字列の"あいう会社")を表示させたいのですが、どの関数を使えばよいのかわかりません。 フィルターに使った文字列を抽出する関数、 あるいはフィルタした値は常にB列の上から2行目にくるので、 これを参照してB列の最終行のセルに表示させる方法 はあるでしょうか?

  • セルの内容を合わせるエクセル関数

    お世話になります。 エクセルの関数にて、下記条件を満たす関数が作れないので 分かる方がいましたら教えてください。 A列には文字列が、B列には空白か1の数字がランダムに(1番上の行は必ず空白セル)入力されています。 これに対して、B列に空白から1が続いているセルまでをひとくくりとして、 右側のセルに表示させたいです。 画像では C2セル=A2 C3セル=IF(B3=1,C2&A3,A3)としてC4セル以降にコピペ D2セル=IF(B2="",C2,"")としてD3セル以降にコピペしていますが、 C列でひとくくりになるセルが下へ行ってしまい、 希望する結果に表示されないです。 関数が組める方がいましたらご伝授頂けますでしょうか。

  • エクセル関数で教えてください。

    エクセルでB列には商品名(セルB1にみかんセルB2にみかんセルB3にみかんセルB4に柿セルB5に柿セルB6に柿、C列にはみかん柿の数量ランク(例:C1に1~、C2に10~、C3に100~と記入)、D列にはC列のランク毎の単価が表示されています。(D1に1000、D2に800、D3に500、D4に1500など) この表を、ほかのシートのA1にみかん、A2に柿と入力させて、B1に関数を入力してB1セル内で数量ランクの1~1000、10~800、100~500と横一列に表示させたいのですが可能でしょうか? どのような関数が適当でしょうか? このパソコンはエクセル使えず、添付できずわかりにくい説明で申し訳ないのですがどなたか教えてください。よろしくお願いいたします。

  • 関数で、最大値のあるセルの列を表示したい

    エクセルの関数について教えてください。 セルH1に関数を使って、列A、列C、列E、列Gの最大値を出しました。 その下のH2のセルに、関数を使って、列A、列C、列E、列Fの最大値のある列(A,B,C,Dのいずれか)を表記させたいのですが(下記のように)、可能でしょうか?   A B C D E F G H 1 10 ※ 28 ※ 66 ※ 26 99 2 56 ※ 29 ※ 89 ※ 28 A 3 99 ※ 12 ※ 66 ※ 10 (列Hが上記のようになるようにしたいのです。)

  • エクセル 文字が表示されたセルを抽出したい

    エクセルの関数を教えて下さい。    A     B     C     D   1 りんご              りんご 2       プリン        プリン 3             紅茶   紅茶 4 バナナ              バナナ 5      6             緑茶   緑茶 上記のような表があります。(A~は列、1~は行番号です) A1~C6までは、IF関数で、条件にあった場合に“りんご”などを表示、そうでない場合には空白と なるような式が入っています。 そして、D列のように、それぞれの行に表示されている文字を抽出、何も表示されていない場合は空白としたいのです。 D列にはどういった式を入れればよいかを教えて下さい。 ※各行に表示されるのは1つのセルのみで、例えばA1のセルとC1のセルに文字が表示される ことはありません。A1に文字が表示されている場合は、必ずB1・C1のセルは空白です。 宜しくお願い致します。

  • Excelの関数について

    [C1のセル値]-[A1またはB1のセル値] を使って計算したい場合の計算式を教えて下さい。 A列、B列、C列には具体的な数値を入力します。 D列にその結果を表示させる関数を入力したい。 と考えています。 但し、以下の条件を満たす事が必須となります。 (1)A、B、またはCのセルが未入力の場合はDは空白セルのまま。 (2)A、Bいずれかの一方が入力されている場合はCの値を使って計算し結果を表示。 (3)A、Bいずれも入力されている場合はBを優先してCの値を使って計算し結果を表示。 よろしくお願いします。

  • エクセル2010で二つのセルを一つにまとめる関数

    エクセル2010を使っています。 二つのセルに入っているそれぞれの数値を、1つのセルに文字のようにまとめたいです。 例えば、 B2に3、C2に4、なら、D2に34、です。 ただ、 B3に数値が入っていて(例えば5)、C3が空白なら、D3は、B3の数値(5) としたいです。 これらの条件を満たす、D列にいれる関数を教えてください。 どうぞよろしくお願いします。

  • Excelの関数について

    Excelの関数について 今表を作っていて 1日数回データを取って それを1ヶ月ぐらい続ける予定で その結果をExcelの表に入力したいと思っています。 A列に現在値 B列に増加分 C列にA+Bの値を入れたいと思っています。 なので、C列には、C1には=SUM(A1,B1)として セルの右下にポインタを合わせて十字で下まで引っ張って関数をコピーしています。 で、そうするとC列に0が表示されてしまい それはなんとか、ツール→オプション→表示→ゼロ値のチェックを外して解決したのですが C列の合計値は次の行のAのセルに表示したくて 例えば C3の数値はそのままA4に C7の数値はそのままA8にといった感じで で、A2のセルに=C1とかA5のセルに=C4とかしたのですが いちいち関数を埋め込むのは面倒くさいので 下のほうまで関数をコピーしたところ 関数が埋め込まれているので A列とB列にしたの方まで同じ数字が表示されています。 これって消すことはできないのでしょうか? 現在は 最初のA1セルだけに数値を入れたのですが関数を埋め込んだことにより A列とB列すべてにA1セルの数値が表示されています。 まだデータを取っていないのでB列は空白です。 ただ、できれば、下の方に数値が表示されないようにしたいんです。 言葉で説明すると A列とB列に数値が入力されない限り、C列の合計値は表示されない設定にできれば 私の言っているような状況になると思うのですが、そういう事はできないのでしょうか… 教えてください。

  • エクセル関数を教えてください

    日時が一致した列の指定したセルの値を 別セルに表示   A    B   C   D 1 7/1 7/2 7/3 7/4 2 256  264 273  286 3   8   7   13 4 5 6 7/3 7 ? A6(日付)と一致した列の3行目をA7に表示させる関数を教えてください。 勉強不足ですみませんがよろしくお願いします。

  • エクセルの関数を使って、表示させたい!

    エクセルでの質問です。なにぶん、初心者なのでよろしくお願いします。 一覧表の横に金額表があり。C列に最安値を表示したいと思い、 関数「MIN」を使って表示さています。 会社名をB列のセルに関数を使って表示させたいのですが、金額が同数値の場合、 同じセルに2つ(複数)の表示は可能でしょうか? よろしくお願いします。 例) 一覧表   A     B      C    D  1 行先  会社名   最安値 2 →あ    320 3 →い    120 4 →う     300  5 別途金額表    E    F    G   H 1  行先 会社A 会社B 会社C 2  →あ  500  500  320   3  →い  120  320  450 4  →う  300  400  300

専門家に質問してみよう