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

よくある質問なのですが過去の質問をみてもどうも解決できません。
A列の10行から20行まで『名称』として数種類の文字があるとします。その間には空白もあります。
これを100行からある集計表には空白なしで表示したいのです。

A10  あ
A11  い
A12  
A13  う
A14  
A15  え
A16
A17
A18  
A19
A20  お



A100  あ
A101  い
A102  う
A103  え
A104  お

という感じなのですがどうすればできますか。
マクロはできなので関数でお願いします。

A 回答 (8件)

A1とすべきところをA!のようにしてしまいました。

下記が正解です。

=IF(ROW(A1)>MAX(B$9:B$99),"",INDEX(A$10:A$99,MATCH(ROW(A1),B$10:B$99,0)))
    • good
    • 10
この回答へのお礼

ありがとうございます

お礼日時:2011/12/20 10:28

【方法その1】


 まず、適当な列(例えばC列)の1行目のセルに次の数式を入力して下さい。

=IF(INDEX($A:$A,ROW())="","",ROW())

 次に、C1セルをコピーして、C2~C99の範囲に貼り付けて下さい。
 次に、A100セルに次の数式を入力して下さい。

=IF(ROWS($100:100)>COUNT($C:$C),"",INDEX($A:$A,SMALL($C:$C,ROWS($100:100))))

 次に、A100セルをコピーして、A2~A99の範囲に貼り付けて下さい。



【方法その2】
 まず、A100セルに次の数式を入力して下さい。

=IF(ROWS($100:100)>COUNTIF($A$1:$A$99,"*?")+COUNT($A$1:$A$99),"",INDEX($A:$A,SUMPRODUCT((COUNTIF(OFFSET($A$1,,,ROW($A$1:$A$99)-ROW($A$1)+1),"*?")+COUNT(OFFSET($A$1,,,ROW($A$1:$A$99)-ROW($A$1)+1))<ROWS($100:100))*1)+1))

 次に、A100セルをコピーして、A2~A99の範囲に貼り付けて下さい。


※その1、その2は両方とも、通常のワークシート関数ですから、[Shift]+[Ctrl]+[Enter]キー操作は不要です。
    • good
    • 5
この回答へのお礼

ありがとうございます

お礼日時:2011/12/20 10:25

関数では複雑な配列数式にする必要がありますが、以下のような検索とコピー貼り付けを組み合わせると簡単に空白セルをつめて表示することができます。



対象範囲(A10:A20)を選択して、Ctrl+Fで検索ダイアログを出して、検索する文字列に「*」と入力して「すべて検索」し、Ctrl+Aですべて該当セルを選択して、検索ダイアログを閉じてから、Ctrl+Cでコピーし、貼り付け先のセル(A100)でCtrl+Vで貼り付けてください。
    • good
    • 3
この回答へのお礼

ありがとうございます

お礼日時:2011/12/20 10:25

実践的なマクロも関数もなしの超力ワザです


質問の意図からははずれるかも、

空白のB12を選択し右クリック → 削除 → 上方向にシフト → Ok
空白のB13(繰り上がっている)を選択し
 右クリック → 削除 → 上方向にシフト → Ok
複数セルの選択も同様にする
    • good
    • 1
この回答へのお礼

ありがとうございます

お礼日時:2011/12/20 10:25

一番シンプルな式:


A100に
=INDEX(A:A,SMALL(IF($A$10:$A$20="",999,ROW($A$10:$A$20)),ROW(A1)))&""
と式を記入してコントロールキーとシフトキーを押しながらEnterで入力し,下向けにコピーして入れておきます。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2011/12/20 10:25

マクロも関数も「できない」初心者向けの方法です。



添付図参照
1.範囲 A10:A20 を[コピー]して、セル A100 に[貼り付け]
   その結果が Fig-1 です。
2.そのまんまの状態で、[編集]→[ジャンプ]→[セル選択]を実行
3.“空白セル”に目玉を入れて[OK]をクリック
   その結果が Fig-2 です。
4.[編集]→[削除]を実行
5.“上方向にシフト”に目玉を入れて[OK]をクリック
   その結果が Fig-3 です。
「エクセル空白以外の文字を抽出」の回答画像4
    • good
    • 1
この回答へのお礼

おりがとうございます

お礼日時:2011/12/20 10:20

配列数式の方法はデータが多くなると計算が重くなることです。

分かり易く負担のかからない方法は作業列を作って対応することです。
例えばB10エルに次の式を入力して下方にオートフィルドラッグします。

=IF(A10="","",MAX(B$9:B9)+1)

答えの表は例えばA100セルに次の式を入力して下方にオートフィルドラッグします。

=IF(ROW(A1)>MAX(B$9:B$99),"",INDEX(A$10:A$99,MATCH(ROW(A!),B$10:B$99,0)))
    • good
    • 1
この回答へのお礼

ありがとうございます

お礼日時:2011/12/20 10:28

>マクロはできなので関数


 ⇒A100に=IF(COUNTA($A$10:$A$20)>=ROW(A1),INDEX($A$1:$A$20,SMALL(IF($A$10:$A$20<>"",ROW($A$10:$A$20),999),ROW(A1))),"")を入力、下方向に必要分コピー
  入力完了時にShift+Ctrl+Enterキーを同時押下(配列数式の指定)
    • good
    • 1
この回答へのお礼

ありがとうございます

お礼日時:2011/12/20 10:28

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

このQ&Aを見た人はこんなQ&Aも見ています