• ベストアンサー

エクセル 空白以外のセルを関数などで抽出したい

以下のように、1列上に、入力されてるセルと空白セルが存在します。   A 1|あああ 2| 3| 4|いうえ これを、以下のように抽出したいのですが、方法を教えて下さい。 オートフィルタなどではなく、集計終了後、以下のように抽出された値を そのまま別シートにコピーしたいと考えています。     A 100|あああ 101|いうえ ●ちなみに、2行目や3行目に、集計終了までに値が入る可能性があります。 よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

#01です。ご期待に沿えたようで嬉しいです。 補足していただいた条件なら以下の式になります。Shift+Ctrl+Enterで確定してください。 =IF(ROW()-167>COUNTIF($AG$12:$AG$159,"<>"),"",INDEX($AG$1:$AG$159,SMALL(IF($AG$12:$AG$159="","",ROW($AG$12:$AG$159)),ROW()-167)))

kinkan0612
質問者

お礼

本当にほんとうにありがとうございます。 理解不足&知識不足で、INDEXまで範囲を変えてしまっていたのですね。 今まで「コピペ」作業で時間を費やしていた事がたくさんあったので、これで、作業効率がはかれ、上司にもほめてもらえそうです! これからも、何かありましたら、よろしくお願い致します。

その他の回答 (3)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

C列からAI列まで、12行目~159行目で値が入っているセルだけを160行目以降に抽出する、ということでしょうか。 マクロを使ってよければこんなので。 Sub 抽出()   Dim Column As Integer, FromRow As Integer, ToRow As Integer   For Column = 3 To 35 'C列からAI列まで     Range(Cells(168, Column), Cells(65536, Column)).ClearContents     ToRow = 168     For FromRow = 12 To 159       If Cells(FromRow, Column).Value <> "" Then         Cells(ToRow, Column).Value = Cells(FromRow, Column).Value         ToRow = ToRow + 1       End If     Next   Next End Sub

kinkan0612
質問者

お礼

ありがとうございました。 関数とは違ってボタン1つで出来ることがとても使いやすかったです。 でも、ちょこちょこ変更したり、エクセルをあまりわからない上司が利用する為、教えて頂いたマクロは次回自分で作ったデータで使わせて頂きます。 ありがとうございました。

回答No.2

オートフィルタを使って「空白以外のセル」で以下のように表示させます。    A 100|あああ 101|いうえ コピーしたい範囲をドラッグしCtrl+Gで「ジャンプ」ダイアログが開きますので 左下の「選択オプション」ボタンを押し、右下の方にある「可視セル」を選択し コピペではいかがでしょうか?

kinkan0612
質問者

お礼

ありがとうございました。 ただ、集計した内容が、C列~AI列まであり、オートフィルタをかけなければいけない内容の集計列が10以上ある為、効率よく作業する為、一度に出来る関数をお教え頂ければ。。。と思っての質問でした。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

データがA1:A99にあるとして、以下の式を任意の列の1行目に貼り付けてShift+Ctrl+Enterで確定してください(配列数式にする)。そのセルを下方向に必要分だけコピーします。 =IF(ROW()>COUNTIF($A$1:$A$99,"<>"),"",INDEX($A$1:$A$99,SMALL(IF($A$1:$A$99="","",ROW($A$1:$A$99)),ROW()))) 質問例では100行目に並び替えたリストを表示するようになっています。どうしても100行目からにする必要があるなら以下の式になります。 =IF(ROW()-99>COUNTIF($A$1:$A$99,"<>"),"",INDEX($A$1:$A$99,SMALL(IF($A$1:$A$99="","",ROW($A$1:$A$99)),ROW()-99)))

kinkan0612
質問者

補足

ありがとうございました。感激です。根本的に出来た事がとてもうれしいです。例文でやってみたら出来ました。 しかし、一番やりたい内容がどうしても完成しません。 「AG列、12行目~159行目」を範囲として、AG列の168行目以降に答えを表示させたいのです。 お教え頂いた下の式を「-167」とし、「AG12:AG159」と変えても答えが「0」になってしまいます。 ※AG168に、式中一部を、「-167」とし、「AG1:AG159」にしたら出来ました。 ※答えを出したい内容が記載されてるのが12行目以降なので困ってます。 ※範囲を、途中の行を開始とする事は出来ないのでしょうか。。。 理解不足で申し訳ありません。お教え頂けるとうれしいです。

関連するQ&A

  • 空白ではないセルを抽出したい

    エクセルで空白を含む列の中から 空白以外のセルを順に表示させたいのですが、可能でしょうか? 例えば、 社名   売上額 A社   1,000      2,000      3,000      4,000 B社    5,000      6,000      7,000 C社    8,000      9,000      10,000      11,000      12,000 の表を 社名  売上 計 A社   10,000 B社   18,000 C社   50,000 の様に集計表を作るのに、社名の列の空白の行を詰めて表示させたいのですが、 オートフィルタや並べ替えを使わずに関数で抽出したいと思っているのですが、可能でしょうか? 宜しくお願いします。

  • エクセル関数で困ってます。

    "オートフィルタ"使用中に "SUMIF"と"COUNTIF"も使用したいのですが… ある条件を"オートフィルタ"で 抽出した以下のような数値を、元に計算したいです。     「A」 「1」 +80 「2」 -10 「6」 +70 「9」 -20 「10」 +60 「11」 -30 「15」 +50 「18」 -40 「19」 +40 「20」 -30 ※「」は行、列の意味です。 ※「行」の数字が飛んでいるのは、オートフィルタで条件抽出の為 抽出された「行」のみ表示されているというイメージです。 ※列は、1列のみです。 上の数値の プラス(0以上の数値)の値 マイナス(0以下の数値)の値 プラス(0以上の数値)の平均値 マイナス(0以下の数値)の平均値 全てのデータの個数の合計 を出したいのですが オートフィルタを使用中が条件なんです。 現在は、抽出したデータをコピーし 計算シートに貼り付けしている状態です。 出来れば、一度に出したいです。 よろしくお願いします<m(__)m>

  • 複数シートからのセルの抽出

    複数シートからのデータの抽出をしたいのですが、教えてください。 [処理] あるEecelBookに含まれる全てのsheetに対して、シートの1行目とA列のあるセルの値が1995または1996である場合はその当該行をコピーし、新しく作ったsheetに集計する。 説明が下手で住みませんが、よろしくお願いします。

  • エクセル関数 セルの個数

    A列に空白セルと文字列が入力されています。 文字列が入っているセルだけをフィルタで抽出しました。 その抽出されたセルが何行あるか個数を出す関数はありませんか?

  • 空白セルとして認識しない

    win2000, excel2000です。 例えば、C1に=IF(A1="","",B1)という式が入っています。 この式がC1000まで入っています。 C1~C1000には空白行が散在します。 C列のセルが空白の行をマクロでなく削除したいので C1~C1000を選択肢、「コピー→形式を選択→値」で C1~C1000にコピーします。 C1~C1000を選択し、 「ジャンプ→セルの選択→空白セル」 を実行しても「見当たりません」と返されます。 オートフィルターで空白以外のセルを実行すると、 空白と認識されるようですが、 ジャンプではだめなのでしょうか? オートフィルターで印刷には支障がないのですが、 このbookをメールで送ったりするので、 できれば空白行をマクロでなく削除した後で 送りたいのですが。

  • エクセルで空白セルを抽出して連番

    データが約1,000件あって、その中のある列の一部のセルに飛び飛びに空白セルが200件ほどあります。 これを抽出して、001などのように3桁の連番をふりたいと思います。 オートフィルターを使ってセル毎に入力しましたがらちがあきません。 まとめてできる方法がないでしょうか。

  • オートフィルターによって、抽出したセルにだけペーストしたい。

    例えば、 5行ごとの世帯表があります。 A列には氏名が入力されています。 2人世帯は2行しか使いませんので、下3行は何も入力されていない行です。 つまり、10世帯分で100行あり、その中に合計38名分の氏名が入力されています。 列を挿入して、B列に新しい列を作りました。 この列に、別シートの同じ世帯員の生年月日が入力された列(ブランクの無い38行の38個のセル)を貼り付ける場合、どのように貼り付けるのでしょうか。 オートフィルターで、A列の空白セルを除いてから貼り付けたら、オートフィルター解除後、空白セルにも貼り付いてしまったので、ずれてしまいました。 オートフィルターで、省いた(隠した)セルに貼り付かないように貼り付けるにはどうすればいいのでしょうか。

  • 【EXCEL2003】特定の条件を満たすセルを含む行を指定したシートに移動したい

    EXCELのデータ集計で質問です。 データを集計・グラフ化したいのですが、特定の条件を満たすセルを含む行を指定するシートに移動したいと考えているのですが、可能でしょうか。 可能ならば方法を伝授していただきたいと思っています。 データには、列Bに「A」「B」「C」「空白」と4種類を含んでいます。 これらのデータで、セル「A」を含む行のデータのコピーをsheet"Aランクデータ"に自動的に移動するようにしたいのです。 オートフィルタで抽出して、コピー・ペーストを実施しているのですが、これしかないのでしょうか・・・? よろしくお願いします。

  • 常に「空白以外のセルを表示」したい。

    こんにちは。 A列には別のsheetを参照して表示させています。 そのA列をオートフィルターで「空白以外のセルを表示」していますが、参照セルの内容が変わってもオートフィルターのドロップダウンを選択しないと「空白以外のセルを表示」してくれませんが、毎回選択しなくても、常にその様に表示している設定にならないでしょうか。 良い方法があれば教えて下さい。 WinXP Excel2003です。

  • 空白セルに自動で値を入れたい

    どなたかご教授賜りたく・・・。 エクセルの表(具体的にはピボットテーブルをコピーして値を貼り付けた)で、列ごとで値と空欄のセルが混在しています。 基本的に空白はその列の直近の上の値が入ります。 1行空欄ならそのすぐ上の値、2行空欄があってもやはり上の直近の値が入ります。 例)    A 1 ○○○   2 3 ○△○ 4  5     ↓    A 1 ○○○   2 ○○○ 3 ○△○ 4 ○△○ 5 ○△○ という風にしたいのです。 現在、オートフィルタで空白だけをソートして、Ctrl+Dをひたすら押し続けて上の値をコピーしていますが、数百行もあれば手の指が疲労して硬直してしまいます。 関数を使って自動で入れる方法はありませんでしょうか?

専門家に質問してみよう