[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『空白行を詰める』(あや)
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.