• ベストアンサー

エクセルで質問です

いつもすいませんが教えて下さい。 例えば A列の4行目~16行目に空白と数値がランダムにはいっています。 これをB列の2行目から空白を除いて、数値のみを順番に並び替えるには、マクロが必要なのでしょうか? 、必要ならマクロを教えてください。 できればマクロなしが希望ですが。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.8

C列の4行目に次の式を入れます。 =IF(A4="","",ROW()) で、これを16行目までコピーします。すると、C列に、A列に数字のあるところはその行番号、A列のセルが空白の場合には空白という数値の列が出来ます。 あとは、B2に下記の式を入力し、B14までコピーします。 =IF(COUNT($A$4:$A$16)>=ROW()-1,(INDEX($A$4:$A$16,SMALL($C$4:$C$16,ROW()-1))),"") C列の番号を小さい順にならべます。 ROW()-1 というのは番号を1番から発生させるためで、この式はB2、つまり2行目から始まるため、-1 にして1、2、3、・・・・を得ています。

その他の回答 (7)

  • dejiji-
  • ベストアンサー率38% (327/858)
回答No.7

必要な範囲を選択後、編集→ジャンプ→セル選択で定数を選択→OKで数値の入ったセルが選択されるのでそのセルの上にカーソルを移動し、右クリックでコピー後、別の場所に貼り付ければ出来ませんか。 並び替えは無し、空欄も除去された状態になります。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.6

配列式です。 B2に =IF(COUNT($A$4:$A$16)>=ROW(A1),INDIRECT("a"&SMALL(IF($A$4:$A$14<>"",ROW($4:$14)),ROW(A1))),"") として、Ctrl + Shift + Enter で確定後、下方コピー+ペースト A4:A16の値のあるセルをB2から空白を詰めて表示します。 範囲を拡大する場合は、式中すべての$A$4:$A$14と$4:$14を等しくしてください。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

(データ)A1:A10 2 8 3 4 2 9 5 (関数式) B2に=IF(ROW(A2)-1<=COUNT($A$2:$A$10),SMALL($A$2:$A$10,ROW()-1),"") といれて最下行まで式を複写。 (結果)B2:B10 2 2 3 4 5 8 9

  • catby
  • ベストアンサー率65% (50/76)
回答No.4

こんなのはいかがでしょうか? まず、C2から下方向に1から順に数値をふります。 (C2=1 C3=2 といった具合に) そして、 B2には以下の式を書きます。 =SMALL($A$4:$A$16,C2) これを、下方向にコピーしていけば、小さい順にA列のデータが並びます。 セルにエラーが表示されるのが嫌な場合にはこのように書くと、エラーが表示されません。 =IF(COUNT(SMALL($A$4:$A$16,C2)),SMALL($A$4:$A$16,C2),"") ちなみに、大きい順番で並べたい場合は、SMALLの代わりにLARGEと書いてください。

GACHAMAN
質問者

補足

すいません 質問の仕方が悪かったですね。 A列の数値の順番は変えたくないのです。 空白だけを抜かして詰めて行きたいのです。 よい知恵をお貸し下さい。

  • laputart
  • ベストアンサー率34% (288/843)
回答No.3

●試す前にファイルを保存しておいてください。 ●A列だけを選択して データ→並び替え で 数字だけを上から並び替えることが出来ますが 数字の昇順あるいは降順になってしまいます。 ●マクロを使う場合はこんな感じです。 Sub Macro1() 'B列の開始行 J = 2 'A列の4から16の処理 For I = 4 To 16 Z = "A" & CStr(I) Range(Z).Select V = ActiveCell.Value '空白の場合 If IsEmpty(V) Then Else Z = "B" & CStr(J) Range(Z).Select ActiveCell.Value = V J = J + 1 End If Next I End Sub '-------------------- 注意 Aの値が文字列などの場合もそのままコピーされます。

  • Ryo921
  • ベストアンサー率23% (14/59)
回答No.2

この答えでいいのかわかりませんが… 意図を間違えていたらすいません。 まず、対象のA列をB列にコピーします。 そして、B列を選択します。 それから、メニューバーのデータ(D)の中から 並び替え(S)を選択して、並び替えを行えば、 順番に並ぶと思います。 参考になれば、幸いです。

回答No.1

A4~A16をコピーし、B2に貼り付け、並び替えを行ってはどいうでしょうか?

関連するQ&A

専門家に質問してみよう