プロが教えるわが家の防犯対策術!

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

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

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

    A
100|あああ
101|いうえ

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

A 回答 (4件)

#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)))
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/11/22 15:58

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/22 18:48

オートフィルタを使って「空白以外のセル」で以下のように表示させます。



   A
100|あああ
101|いうえ

コピーしたい範囲をドラッグしCtrl+Gで「ジャンプ」ダイアログが開きますので
左下の「選択オプション」ボタンを押し、右下の方にある「可視セル」を選択し
コピペではいかがでしょうか?
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/11/22 14:42

データが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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!