• ベストアンサー

エクセルで質問です

いつもすいませんが教えて下さい。 例えば 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/17068)
回答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

  • エクセルの参照先(仕事で困ってます。)

      A1 B1 C1 D1 1 ■ - - - 2 ■ - - - 3 ■ - - - 4 ■ - - - 5 ■ - - - 6 - - - ● 7 ■ - - - 上の図の様にA列には1~6行にかけて■があるところに数値が入っています。 その時により1行から何行はいるかわからないのですが、 最後の行は空白にして、また次の行から数値が入るようになっています。 空白から空白までの行を合計して(今回はA1~A6)をD6に表示させたいのですが、なにぶんA列には何行入力されるか、空白が来るかなどはランダムです。 このような場合に、D列にはどのような関数を貼り付けたりしたら いいでしょうか? 入力するのはA列の数値だけにしたいということです。                                                                                        

  • Excel VLOOKUPで複数の関数

    どなたかわかる方教えて下さい!! わかりにくい説明かと思いますが、よろしくお願い致します。 Aシートにコードが入力されています。 Bシートにコード、文字列、数値が入力されています。 AシートのコードでVLOOKUPを使い、Bシートから数値を呼ぶことはできるのですが、 数値が空白の場合は、空白にする。B列の文字も検索したい場合はどのようにすればよろしいでしょうか? 例 Aシートには、コード001が入っています。 Bシートから、コード001、「あ」の行を検索し、数値をもってきて、空白の場合は空白にしたいです。     A列   B列   C列   D列 1行  001   あ   10   空白 2行  001   い   20   30 3行  002   あ   30   空白

  • excel 数値と空白がランダムに並んだセルの移動平均

    エクセル2003でA列に適当な数値と空白セルが、上からの順番でランダムに並んでいて、それをもとにB列の各行それぞれに移動平均を出したいと思っています。 移動平均は数値が入力されたセルのみを対象にして空白のセルをとばし、さらに直近の異なる数値をさかのぼって4つ探し、計算対象としたいのですがどのようにしたらよいでしょうか? 宜しくお願い致します。

  • エクセル関数で・・・

    A列の1行目から45行目までに、”1”か”×”を入力するか、空白があります。 B列の1行目から45行目までに、様々な数値、若しくは空白が入ります。 この時、A列が”×”の行でB列が空白でないセルをカウントする数式を教えて下さい。   A  B 1 ×  20 2 × 3 1  30 4 ×  5 1  20 6 7 1  30 8 ×  10・・・・ こんな感じで、A列が”×”でB列が空白でないセルは『2』と導きたいのです。 分かりにくい説明で申し訳ありませんが、宜しくお願いいたします。

  • エクセルで入力済みのセルのみ見つけて・・

    エクセルで入力済みのセルだけを見つけ出して、 指定した場所に並べる作業をマクロで1発で出来るようにしたいのですが、その方法を教えてください。 シートが37シートあります。(sheetA1~sheetA12,sheetB1~sheetB12,sheetC1~sheetC12,sheet37) それぞれセルC5からC20まで数値が入っていますが、 最終行はC20とは限りません。(sheet37はまとめるためのシートで空白) C15が最終行の場合もあれば、C18が最終行の場合もあります。 各シートそれぞれ最終行が違います。(列は同じですスタートもC5です) 各シートのC列の入力済みのセルの数値をsheet37のB1セルから順番に縦に並べたいのです。 A,B,Cのシート順にC列に入力された数値を縦に並べます。 空白は無しで詰めて並べます。 これを1回の作業でできるマクロを教えてください。 それから入力済みの最終行を見つけ出すマクロの部分を表示して頂けるとありがたいです。 宜しくお願いします。

  • エクセルVBAで質問です。

    エクセルVBAで質問です。 A列   B列 AAAA  1111 BBBB  2222 CCCC  3333 とあります。 上記を AAAA (空白) (空白) 1111 (空白) BBBB (空白) (空白) 2222 (空白) CCCC (空白) (空白) 3333 (空白) A列にB列を挿入し、2・3・5行目に空白のセルを入れていきたいのです。 9000行ぐらいあります。 他の列に A列、B列のものを取得していく形でも構いません。 とにかく、縦1列に並べたいです。 どなたか、ご教授お願い致します。

  • エクセルでマクロの作成

    a列の1行目が『No』の項目名以下の行が空欄になっています。 b列に『あ』があれば同じ行のa列を空白にして、次のb行が空欄であれば同じ行のa列に1の数字を、b列の空白行に対しa列には連続番号が入るようにしたいのですが、マクロがどうしてもうまくできません。 どなたか、初心者向けに解りやすい解説と実際のマクロを教えていただけませんか? 初心者でうまく説明できてないかもしれませんがよろしくお願いします。

  • excelのデータの移動?集約?をしたいです

    よろしくお願いします EXCEL2000を使用しています。OSはXPです。 データがランダムにA~O列 1~200行まであります この量は、その時その時変わるのですが だいだい、その範囲にあります そのランダムに入っているデータを空白のセルを除いて A列に並べたいのです 順番は1行目から横にあるデータを順番に下に並べ 次は2行目のデータで、その次は3行目。。。としたいです 例 A1 B1 C1 D1 E1 A2 C2 E2 A3 B3 D3 というデータを A1 B1 C1 D1 E1 A2 C2 E2 A3 B3 D3 というようにしたいのですが よろしくお願いします

  • Excelでグループ化し、グループ名を数値で返すには?

    Excelで次の解を求める時、いいアイディアはないでしょうか。 1) セルをグループ化します。 2) 次にグループ化したまとまりごとに、 左列に数値を順に返します。 つまり以下のようなセルがあるとき : A B 1 : 空白 442565 2 : 空白 442565 3 : 空白 332211 4 : 空白 332211 5 : 空白 332211 ↓ : A B 1 : 1 442565 2 : 1 442565 3 : 2 332211 4 : 2 332211 5 : 2 332211 つまりBが同じ数値である セル同士をワングループとして、 そのグループを順列に数値でA列に 区分したいのです。 A列が何セルでグループ化されるかは ランダムです。B列において2つのセルが 同じ数値を共有している場合もありますし、 100のセルが同じ数値を共有しているもあります。 データ総数はおよそ9000列ほどになります。 集計機能を用いた方がよいでしょうか。 関数の他にアイディアがあれば、教えて 頂けるととても助かります。 宜しくお願い致します。

  • エクセルのマクロについて質問です。

    エクセルのマクロについて質問です。 マクロを発動した時に、あるセルに入力してある数値を参照し、その行のX列目に数値を張り付けるものを作成しようとしています。 例えば シート「1」の A1に日付を入力 B1にある数字を入力 シート「2」の A列にA1→1~A31→31の日付が入力されている時 マクロ発動時にシート「1」A1の日付と一致する シート「2」のB列にシート「1」のB1の値を貼り付け ↑たとえばシート「1」のA1が1日でB1が500だった場合 シート「2」の1日(A1)と同じ行でB列(B1に500を 貼り付けるものです。 かなり下手な説明だと自覚しておりますが、解読できる方 どうかご教授ねがいます。

専門家に質問してみよう