[[20130724132558]] 『空白行を詰める』(あや) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

 『空白行を詰める』(あや)

 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.