一回も披露したことのない豆知識

Excelで、3行が一組になったデータがあります。
(例えば、1行目に部品番号、2行目に出荷数、3行目は空白)
列によっては、1行目しかなかったり、1行目と3行目が埋まっていたりします。

その3行の組は壊さずに、部品番号をキーにして並べ替える方法ってありますか?

普通に並べ替えると、空白セルはすべて後ろに行ってしまって、表が崩れてしまうのです。

どなたかご存知ないでしょうか?

A 回答 (8件)

例えばこんな感じだとして、



  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列基準で並び替えをします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/12 09:53

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)が終わった状態例
a3111a31111
23a31112
a31113
a234a2341
234a2342
a2343
a345a3451
34a3452
a3453
のように3行ごとに、部品番号とその末尾に1,2,3の番号を付加しています。これで、ソートしても、第1,2、3行の順序が崩れません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/10/18 18:52

データの列を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      |  空白
---------------------
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/12 09:51

#4です。



VBAが必須であるように書きましたが、オートフィルタとソートの組み合わせで可能です。

#2さんのを読んでそう思いました。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/12 09:52

結論としては、VBAを使うと可能です。

方法はいろいろあると思いますが、一つは、1つ分のデータを1行(1レコード)に整形して、ソート後、元に戻すというものです。

もう一つは、DAOとかADOというのでレコードセットを作り、ソート後元に戻すというものです。これもVBAでやります。

どのアドレスに現データがあり、どのアドレスにソート後のデータを書きだし、それらデータがいくつぐらいあるかがわかれば、具体的なコードの回答もつくかもしれません。



Excelの標準機能では、、、今回のようなスタイルのデータソートは難しい気がします。

今後は並び替えを要するデータは1行単位で持たせていくようにされるのがいいと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/12 09:55

こんにちは。



普通に、並び替える作業を行う対象のセルを全部選択して
データ → 並び替え で 部品番号の列を並び替えキーにして
実行したら出来ませんか?

空白セルを含むデータの整列も、
ワタシはいつもこれでやってますけど???
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/12 09:56

どこか一列を挿入。


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

で、この挿入された行をキーに並べ替えたらどうでしょう?
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/12 09:57

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/12 09:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!