[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『空白行を詰める』(あや)
XP 2003
D列からG列に数字が入っており(最大40行まで) これを詰めて1列に表示させたい
【例】 A B C D E F G 1 123 003 778 592 2 235 456 678 840 3 988 4 165 5 368 6 ↓ 20
【結果】 123 235 003 456 988 165 368 778 678 592 840
良い方法はありませんか?
マクロじゃないやり方です。
詰めたい空白のセルがある範囲を選択→Ctrlキーを押しながら「G」を押すと、 ジャンプダイアログボックスが出てくるのでセル選択をクリック。 選択オプションダイアログボックスが出てくるので、空白セルを選択しOK。 →これで空白のセルだけ選択されました。 そしたら右クリックで削除を押し左方向へシフトを選んでOK。
これで空白セルはなくなり左詰めになったかと思います。
ってうわぁ・・お恥ずかしいことをしました。
これじゃご希望の結果にならないです・・・申し訳ない。
(ぬ)
(ぬ)さんありがとうございます
どこか操作方法を間違えているのかもしれませんが こんな風になりました
123 003 778 592 235 456 678 840 988 165 368
(あや)
方法間違ってないです。 空白行を消して詰めるという作業しかやってないので、 123 003 778 592 のように1行ずつにはならない作業です。
無駄なことを書き込んでしまいました、 お恥ずかしながら申し訳ございません…!
(ぬ)
マクロの例です。 (Mook) Sub Sample() Dim c As Long, r As Long, rr As Long Range("A1").Resize(4 * 40, 1).ClearContents '// A 列を一回クリア For c = 4 To 7 '// D to G For r = 1 To 40 If Cells(r, c).Value <> "" Then rr = rr + 1: Cells(rr, "A").Value = Cells(r, c).Value Next Next End Sub
A列に結果
A1 =IF(COUNT(D$1:G$20)<ROW(A1),"",INDEX(A$1:G$20,MOD(SMALL(INDEX((D$1:G$20<>"")*(COLUMN(D$1:G$1)*100+ROW(D$1:D$20)),),COUNTBLANK(D$1:G$20)+ROW(A1)),100),INT(SMALL(INDEX((D$1:G$20<>"")*(COLUMN(D$1:G$1)*100+ROW(D$1:D$20)),),COUNTBLANK(D$1:G$20)+ROW(A1))/100)))
下へコピー。
(GobGob)
=IF(ROW(A1)>COUNTA(D$1:G$40),"",INDEX((D$1:D$40,E$1:E$40,F$1:F$40,G$1:G$40), MIN(ROW(A1),IF(ROW(A1)>COUNTA(D$1:D$40),ROW(A1)-COUNTA(D$1:D$40)),IF(ROW(A1)>COUNTA(D$1:E$40), ROW(A1)-COUNTA(D$1:E$40)),IF(ROW(A1)>COUNTA(D$1:F$40),ROW(A1)-COUNTA(D$1:F$40))),, IF(ROW(A1)<=COUNTA(D$1:D$40),1,IF(ROW(A1)<=COUNTA(D$1:E$40),2,IF(ROW(A1)<=COUNTA(D$1:F$40),3,4)))))
Shift+Ctrl+Enterで確定後、下へコピー。
式の修正。
=IF(ROW(A1)>COUNTA(D$1:G$40),"",INDEX((D$1:D$40,E$1:E$40,F$1:F$40,G$1:G$40), ROW(A1)-IF(ROW(A1)<=COUNTA(D$1:D$40),0,IF(ROW(A1)<=COUNTA(D$1:E$40),COUNTA(D$1:D$40), IF(ROW(A1)<=COUNTA(D$1:F$40),COUNTA(D$1:E$40),COUNTA(D$1:F$40)))),, IF(ROW(A1)<=COUNTA(D$1:D$40),1,IF(ROW(A1)<=COUNTA(D$1:E$40),2,IF(ROW(A1)<=COUNTA(D$1:F$40),3,4))))) こちらは通常通り、Enterで確定。 (ねむねむ)
ありがとうございましたっ
(あや)
◆数字が3桁と決まっているのであれば、こんな方法はいかがでしょう =IF(ROW(A1)>COUNTA(D$1:G$20),"",TEXT(MOD(SMALL(INDEX((D$1:G$20="")*10^8+ROW(D$1:D$20)*10^6 +COLUMN(D$1:G$1)*10^4+D$1:G$20,),ROW(A1)),10^4),"000")) ★下にコピー (Maron)
=INDEX($D$1:$G$40,ROW(A1)-IF(ROW(A1)>COUNT($D$1:$F$40),COUNT($D$1:$F$40),IF(ROW(A1)>COUNT($D$1:$E$40),COUNT($D$1:$E$40),IF(ROW(A1)>COUNT($D$1:$D$40),COUNT($D$1:$D$40),0))),IF(ROW(A1)>COUNT($D$1:$F$40),4,IF(ROW(A1)>COUNT($D$1:$E$40),3,IF(ROW(A1)>COUNT($D$1:$D$40),2,1)))) 書式「000;;」
A1 =IF(COUNT(D$1:G$20)<ROW(A1),"",INDIRECT(TEXT(SUM(MID(SMALL(INDEX((D$1:G$20<>"")*(COLUMN(D$1:G$1)*100+ROW(D$1:D$20)),),COUNTBLANK(D$1:G$20)+ROW(A1)),{3,2,1},1)*{100,10,1}),"!R0C00"),0))
(GobGob)
=IF(ROW(A1)>COUNT(D$1:G$40),"",IF(ROW(A1)>COUNT($D$1:$F$40),INDEX($G$1:$G$40,ROW(A1)-COUNT($D$1:$F$40)),IF(ROW(A1)>COUNT($D$1:$E$40),INDEX($F$1:$F$40,ROW(A1)-COUNT($D$1:$E$40)),IF(ROW(A1)>COUNT($D$1:$D$40),INDEX($E$1:$E$40,ROW(A1)-COUNT($D$1:$D$40)),INDEX($D$1:$D$40,ROW(A1))))))
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.