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

エクセル 空白を無視して並び替える方法を教えてください。

こんにちわ。
下記のようにしたいのですが、方法が思いつきません。ぜひアドバイスをお願いします。


   A    B    C    D    E
1 あああ 空白 いいい ううう 空白
2 空白  えええ 空白 おおお かかか
3 ききき 空白 くくく 空白  けけけ

このように空白がところどころに混ざっている状況で

   F   G   H
1 あああ いいい ううう
2 えええ おおお かかか
3 ききき くくく けけけ

のように空白を除き並び替えたいです。

私の頭で思いつかなかったため、アドバイスをお願いします。
今回はできればマクロを使用しないで行いたいです。
ちなみに使用しているのはOffice2003です。

A 回答 (7件)

 適当な列(ここでは仮にZ列)を作業列として使用し、


まずはZ1セルに次の数式を入力して下さい。

=IF(COUNTIF($A1:$E1,"><")=0,"",SUBSTITUTE("(株)(有)"&$A1&"(株)(有)"&$B1&"(株)(有)"&$C1&"(株)(有)"&$D1&"(株)(有)"&$E1&"(株)(有)","(有)(株)",))

 次に、Z1セルをコピーして、Z2以下に貼り付けて下さい。

 次に、F1セルに次の数式を入力して下さい。

=IF($Z1="","",MID($Z1,3,FIND("(株)(有)",$Z1,2)-3))

 次に、G1セルに次の数式を入力して下さい。

=IF(3+SUMPRODUCT(LEN($F1:F1)+2)>LEN($Z1),"",MID($Z1,3+SUMPRODUCT(LEN($F1:F1)+2),FIND("(株)(有)",$Z1,3+SUMPRODUCT(LEN($F1:F1)+2))-3-SUMPRODUCT(LEN($F1:F1)+2)))

 続いて、G1セルをコピーして、H1~J1の範囲に貼り付けて下さい。
 次に、F1~J1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。

 以上です。
    • good
    • 1

No.5です!


たびたびごめんなさい。

E列まで元データがあるのを勘違いしていました。

F1セルの数式を
=IF(COUNTA($A1:$E1)<COLUMN(A1),"",INDEX($A1:$E1,SMALL(IF($A1:$E1<>"",COLUMN($A$1:$E$1)),COLUMN(A1))))
(前回同様配列数式になります。)

としてJ1セルまでコピーしてください。

どうも何度も失礼しました。m(__)m
    • good
    • 0

こんにちは!


簡単は方法はすでに回答が出ていますが、
関数での方法をご希望のようなので・・・

質問通りにデータはD列の4列をF列以降に表示させるとします。

F1セルに
=IF(COUNTA($A1:$E1)<COLUMN(A1),"",INDEX($A1:$E1,SMALL(IF($A1:$E1<>"",COLUMN($A$1:$E$1)),COLUMN(A1))))

これは配列数式になってしまいますので、この画面からコピー&ペーストしただけではエラーになると思います。
F1セルに貼り付け後、F2キーを押す、またはF1セルをダブルクリック、または数式バー内で一度クリックします。
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。
数式の前後に{ }マークが入り配列数式になります。

このF1セルをI1セルまでオートフィルでコピーした後に下へコピーすると希望に近い形にならないでしょうか?

以上、参考になれば良いのですが・・・m(__)m
    • good
    • 0

一例です。


F1に以下の数式を貼り付け→shift+ctrl+enterキーを同時押下→縦横にコピー
=IF(COUNTA($A1:$E1)>=COLUMN(A1),INDEX($A1:$E1,SMALL(IF($A1:$E1<>"",COLUMN($A1:$E1),999),COLUMN(A1))),"")
    • good
    • 3

該当するセル範囲をがばっと選択して、「編集」メニューからジャンプ→セル選択→空白セルでOK。


選択されたセルのどこかにカーソルを置いて、右クリックで削除。オプションで「左に詰める」を
選んでOKすれば、お望みの通りになりませんか?

ただし、データ量が多すぎる場合は、フリーズする可能性があるので、そのときは分割して
やってみてください。
データの左端、下端から分割して実行するのがいいと思います。

この回答への補足

ありがとうございます。
そして、すみません>ω<

書き忘れました!
数式を使ってこれを行いたいです。

補足日時:2010/10/13 12:54
    • good
    • 0

並べ替えというか、空白詰めですね。



ファイル~名前を付けて保存
ここでファイルの種類を「csv」にします。
保存が終わったら、ファイルを閉じます。

テキストエディタ(メモ帳など)で、いまのCSVファイルを開きます。
編集~置換(違う場合もあります)で、
置換前 「,,」
置換後「,」
で、全て置換を実行します。空白が連続する場合は、置換候補が無くなるまで繰り返し実行します。
行の先頭が「,」の場合には、正規表現に対応したテキストエディタなら置換できますが、わからなければ取りあえず直接編集して下さい。
(Excelの並び替えなどで、あらかじめ先頭が空白のセルを消しておくのもいいかも)

上書き保存してExcelで開くと、空白が抜けたものになっています。

この回答への補足

ありがとうございます。
そして、すみません>ω<

書き忘れました!
数式を使ってこれを行いたいです。

補足日時:2010/10/13 13:51
    • good
    • 0

空白を除きたいだけなら、「データー → 並び替え」だけで良いのではないでしょうか??


(空白部分を詰めるという考え)

この回答への補足

ありがとうございます。
そして、すみません>ω<

書き忘れました!
数式を使ってこれを行いたいです。

補足日時:2010/10/13 13:51
    • good
    • 0

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

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


このQ&Aを見た人がよく見るQ&A