• ベストアンサー

エクセルでこんな並べ替え方って・・・。

Excelで、3行が一組になったデータがあります。 (例えば、1行目に部品番号、2行目に出荷数、3行目は空白) 列によっては、1行目しかなかったり、1行目と3行目が埋まっていたりします。 その3行の組は壊さずに、部品番号をキーにして並べ替える方法ってありますか? 普通に並べ替えると、空白セルはすべて後ろに行ってしまって、表が崩れてしまうのです。 どなたかご存知ないでしょうか?

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.5

例えばこんな感じだとして、   A列 1  B001  ←部品番号 2  30 3  空白 4  A001  ←部品番号 5  空白 6  空白 空いている列(例えばB列)の上から3行目までに =A1&"-1" =A1&"-2" =A1&"-3" と入れ、3行を選択した状態でフィルハンドルでコピーします。 すると、B列に下記のようなデータが出来るハズです。 B001-01 B001-02 B001-03 A001-01 A001-02 A001-03 並べ替える前に列全体をコピーし、形式選択貼付けの値で貼付けます。 最後にB列基準で並び替えをします。

miho0423
質問者

お礼

こんにちは。 昔の質問履歴のチェックで、お礼できていない質問に大々的にお礼をしています。 長い間、失礼しました。 ありがとうございました。

その他の回答 (7)

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

A1に部品番号、A2に出荷数、A3は空白とし、以下A3、A4.A5、・・・と3行ごとに繰り返すとします。 (1)B列位置に列を列挿入します。 (2)B1に関数式 =OFFSET($A$1,3*INT((ROW()-1)/3),0)&(MOD((ROW()-1),3)+1)といれます。 (3)B2以下最下行まで複写します。 (4)B列セルを自己セルに「値のみ複写」して、関数式を消します。 (5)データ全体列を範囲指定して、B列をキーとして 並べ替えをします。 ---- (3)が終わった状態例 a3111 a31111 23 a31112 a31113 a234 a2341 234 a2342 a2343 a345 a3451 34 a3452 a3453 のように3行ごとに、部品番号とその末尾に1,2,3の番号を付加しています。これで、ソートしても、第1,2、3行の順序が崩れません。

miho0423
質問者

お礼

みなさん短時間の間に丁寧なご回答をありがとうございました。おかげで解決しました。 実は、実際にこの作業をするのは、パソコン音痴の父なので、関数などの知識がほとんどなくてもできる方法を下さった方に20ポイント差し上げます。 みなさん本当にありがとうございました。

回答No.7

データの列をB列としたとき、A列に下記のような3個セットの式を入れ3行とも部品番号を参照するようにし、A列をキーに並べ替えをします。 式の入力は3個セット、6個セットと倍、倍に増やしてコピーアンドペーストを繰り返していけば、楽に入れることが出来ます。A列が邪魔なときはセル幅を0にして置きましょう。 | A      |  B -------------------- 1|ソートキー   | DATA --------------------- 2|=B2      | 部品番号 --------------------- 3|=B2      |  出荷数 --------------------- 4|=B2      |  空白 --------------------- 5|=B5      | 部品番号 --------------------- 6|=B5      |  出荷数 --------------------- 7|=B5      |  空白 ---------------------

miho0423
質問者

お礼

こんにちは。 過去の質問履歴を大々的にチェックし、お礼できていない質問にお礼をしています。 長い間お待たせして申し訳ありませんでした。 ありがとうございました。

noname#27115
noname#27115
回答No.6

#4です。 VBAが必須であるように書きましたが、オートフィルタとソートの組み合わせで可能です。 #2さんのを読んでそう思いました。

miho0423
質問者

お礼

こんにちは。 過去の質問履歴から、お礼できていない質問にお礼をしています。 長い間、失礼致しました。 ありがとうございました。

noname#27115
noname#27115
回答No.4

結論としては、VBAを使うと可能です。方法はいろいろあると思いますが、一つは、1つ分のデータを1行(1レコード)に整形して、ソート後、元に戻すというものです。 もう一つは、DAOとかADOというのでレコードセットを作り、ソート後元に戻すというものです。これもVBAでやります。 どのアドレスに現データがあり、どのアドレスにソート後のデータを書きだし、それらデータがいくつぐらいあるかがわかれば、具体的なコードの回答もつくかもしれません。 Excelの標準機能では、、、今回のようなスタイルのデータソートは難しい気がします。 今後は並び替えを要するデータは1行単位で持たせていくようにされるのがいいと思います。

miho0423
質問者

お礼

こんにちは。 お礼できていない質問をチェックしていてこの質問が該当しました。 長い間、失礼しました。 Excelは奥が深いですね。 ありがとうございました。

  • bear-3
  • ベストアンサー率42% (26/61)
回答No.3

こんにちは。 普通に、並び替える作業を行う対象のセルを全部選択して データ → 並び替え で 部品番号の列を並び替えキーにして 実行したら出来ませんか? 空白セルを含むデータの整列も、 ワタシはいつもこれでやってますけど???

miho0423
質問者

お礼

こんにちは。 過去のお礼できていない質問に、大々的にお礼をしています。 長い間、大変失礼致しました。 ありがとうございました。

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.2

どこか一列を挿入。 オートフィルタで部品番号が表示される行のみを表示。 オートフィルタをかけたまま挿入した一列の先頭に「=部品番号」のような式を入れ、すべての行にコピー。 オートフィルタを解除。 挿入した列のうち、データを並べ替えたい範囲を選択します。 CTRLキー+Gで「ジャンプ」のダイアログを表示させます。 「セル選択」→「空白セル」をチェックして、「OK」ボタンを押します。 空白セルだけ選択された状態になりますので、そのままの状態で=A1(一番上のセル番地)と式を入力し、 CTRLキーを押しながらENTERキーを押すと、空白セルのひとつ上の部品番号が入力されます。 で、この挿入された行をキーに並べ替えたらどうでしょう?

miho0423
質問者

お礼

こんにちは。 過去の質問履歴から、お礼できていない質問にお礼をしています。 お礼がとんでもなく遅くなり、大変失礼しました。 ありがとうございました。

  • fine_day
  • ベストアンサー率70% (6285/8867)
回答No.1

3行とも選択して、「データ>並べ替え」を開き、「最優先されるキー」で部品番号を選ぶ…ではできないでしょうか。

miho0423
質問者

お礼

こんにちは。 過去に質問してお礼できていない質問に、大々的にお礼しています。 その節はありがとうございました。 お礼が遅くなり、大変失礼しました。

関連するQ&A