総ありがとう数 累計4,308万(2014年11月23日現在)

毎月4,000万人が利用!Q&Aでみんなで助け合い!

-PR-
kinkan0612

以下のように、1列上に、入力されてるセルと空白セルが存在します。

  A
1|あああ
2|
3|
4|いうえ

これを、以下のように抽出したいのですが、方法を教えて下さい。
オートフィルタなどではなく、集計終了後、以下のように抽出された値を
そのまま別シートにコピーしたいと考えています。

    A
100|あああ
101|いうえ

●ちなみに、2行目や3行目に、集計終了までに値が入る可能性があります。
よろしくお願いします。
  • 回答数4
  • 気になる数0

Aみんなの回答(全4件)

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

  • 2006-11-22 15:14:30
  • 回答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)))
お礼コメント
本当にほんとうにありがとうございます。
理解不足&知識不足で、INDEXまで範囲を変えてしまっていたのですね。
今まで「コピペ」作業で時間を費やしていた事がたくさんあったので、これで、作業効率がはかれ、上司にもほめてもらえそうです!
これからも、何かありましたら、よろしくお願い致します。
投稿日時 - 2006-11-22 15:58:26
  • 同意数0(0-0)
  • ありがとう数0

その他の回答 (全3件)

  • 2006-11-22 15:16:49
  • 回答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
お礼コメント
ありがとうございました。
関数とは違ってボタン1つで出来ることがとても使いやすかったです。
でも、ちょこちょこ変更したり、エクセルをあまりわからない上司が利用する為、教えて頂いたマクロは次回自分で作ったデータで使わせて頂きます。
ありがとうございました。
投稿日時 - 2006-11-22 18:48:02
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 2006-11-22 13:39:57
  • 回答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)))
補足コメント
ありがとうございました。感激です。根本的に出来た事がとてもうれしいです。例文でやってみたら出来ました。
しかし、一番やりたい内容がどうしても完成しません。

「AG列、12行目~159行目」を範囲として、AG列の168行目以降に答えを表示させたいのです。
お教え頂いた下の式を「-167」とし、「AG12:AG159」と変えても答えが「0」になってしまいます。
※AG168に、式中一部を、「-167」とし、「AG1:AG159」にしたら出来ました。
※答えを出したい内容が記載されてるのが12行目以降なので困ってます。
※範囲を、途中の行を開始とする事は出来ないのでしょうか。。。

理解不足で申し訳ありません。お教え頂けるとうれしいです。
投稿日時 - 2006-11-22 14:38:52
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 2006-11-22 13:41:58
  • 回答No.2
オートフィルタを使って「空白以外のセル」で以下のように表示させます。

   A
100|あああ
101|いうえ

コピーしたい範囲をドラッグしCtrl+Gで「ジャンプ」ダイアログが開きますので
左下の「選択オプション」ボタンを押し、右下の方にある「可視セル」を選択し
コピペではいかがでしょうか?
お礼コメント
ありがとうございました。
ただ、集計した内容が、C列~AI列まであり、オートフィルタをかけなければいけない内容の集計列が10以上ある為、効率よく作業する為、一度に出来る関数をお教え頂ければ。。。と思っての質問でした。
投稿日時 - 2006-11-22 14:42:56
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 回答数4
  • 気になる数0
  • ありがとう数14
  • ありがとう
  • なるほど、役に立ったなど
    感じた思いを「ありがとう」で
    伝えてください

関連するQ&A

その他の関連するQ&Aをキーワードで探す

別のキーワードで再検索する

あなたの悩みをみんなに解決してもらいましょう

  • 質問する
  • 知りたいこと、悩んでいることを
    投稿してみましょう
-PR-
-PR-
-PR-

特集

専門医・味村先生からのアドバイスは必見です!

関連するQ&A

-PR-

ピックアップ

  • easy daisy部屋探し・家選びのヒントがいっぱい!

-PR-
ページ先頭へ