電子書籍の厳選無料作品が豊富!

あるお客さんから、添付画像のように注文が入ります。
納期が早いものから手配をかけるのですが、これだと見落としてしまうため、
納期順に並べ替えたいです。
ネックなのは納入日が2回以上の場合、添付画像のように列に追加されるので一発での並び替えが出来ません。

この元データ自体はお客さんのシステムの都合上、変えることが出来ません。
毎月1回このデータで注文がきます。

今、個人的に考えているのは
自分用にExcelを作成し、お客さんからきたExcelのシートを丸ごとコピーしたのち、
自分用Excelのsheet1(仮)にペーストすると、sheet2(仮)で日付順に並び替えたものが表示されるような方法がよいかと考えております。

得意な方いらっしゃいましたら、どうかご教示ください。

「納期順に勝手に並べ替えられるようにしたい」の質問画像

質問者からの補足コメント

  • 補足で追加の画像添付が出来ず、説明不足で伝わりづらい事、申し訳ございませんでした。
    理想は、添付画像に並べ替えられたものが理想です。
    (これは手動でひとつひとつ動かし、商品名も入力してとりあえず作成いたしました)

    画像のように、ひとまず画面上部に並び替えた表が出来れば、下部に空欄のある数値等があっても構いません。

    引き続きよろしくお願いいたします。

    「納期順に勝手に並べ替えられるようにしたい」の補足画像1
      補足日時:2024/12/18 17:21

A 回答 (9件)

No7です。

補足ありがとうございました。
マクロを提供する予定ですが、マクロを使用したことがないということですので、
まず、あなたのexcelの環境がマクロを実行可能な状態にする必要があります。

1.下記URLを参考にして、マクロを有効にしてください。

https://cad-kenkyujo.com/excel-macro-yuukou/

「エクセルでマクロを有効にする基本手順」か
「異なるバージョンのExcelでの設定方法」
を見て設定してください。


2.下記URLを参考にして、マクロを登録し、実行する方法を取得してください。

「Excel VBA入門」
https://www.javadrive.jp/excelvba/

の1章 VBA基礎知識の
Visual Basic Editorを起動する
Visual Basic Editorの画面構成
VBAプログラムの作成と実行
VBAプログラムをマクロ有効ブックとして保存する
まで、理解できれば完了です。

3.サンプルマクロの実行
以下のマクロをコピペして、標準モジュールに登録し、実行してください。
添付図のようなメッセージボックスが表示されればOKです。

Public Sub サンプルマクロ()
MsgBox ("これはサンプルマクロです")
End Sub


上記で、マクロの実行環境が整いました。

4.以下のシートを作成してください。
Sheet1:あなたが提示した、「お客さんからのシート」をコピペしたもの
Sheet2:空のシート

Sheet1、Sheet2は仮の名称ということでしたので、もし、Sheet1,Sheet2をほかのシート名に
した場合は、その旨、補足してください。その場合は、Sheet1,Sheet2ではなく、
そのシート名で動作するマクロにします。

上記の1、2,3,4が完了しましたら、その旨補足してください。
「納期順に勝手に並べ替えられるようにしたい」の回答画像9
    • good
    • 1
この回答へのお礼

NO.7様 ありがとうございます。

マクロの設定を行なった際、PCのセキュリティソフトと相性が良くなかったようでやや設定に手古摺ってしまい、上司からこれ以上はセキュリティ的に怖いからNGと言われて進めなくなってしまいました。
PCやマクロの知識がしっかりある人がいればよかったのですが、初心者の集まりの組織のため、継続不可の着地となってしまいました。

お願いした上で、途中で断念する形になってしまい、大変申し訳ございません。
しかし、個人的には非常に勉強になりました。
出来る事ならこのまま進めてマクロを構築してみたかったです…

中断する形で恐れ入りますが、私に新たにマクロの存在を強く教えてくださったNO.7様をBAとさせていただきます。

ご協力いただいた方にも感謝の気持ちでいっぱいです。
ありがとうございました。

お礼日時:2024/12/24 15:56

No6です。



>一旦一列にずらっと並ぶまでは自力で何とかできました…!
>が、やはりその後の並び替えで苦戦中です。
並べ替えができているのなら、あとは簡単です。

仮に、補足にご提示のような形式でB:E列に全データを並べてあるとして、
1)手動で行う方法(No3様の方法です)
 B:E列をB列を基準にして昇順に並べ替えれば良いです。
(リボンの「データ」-「並べ替え」でキー列にC列を指定すればよい)
 上記で、日付が空白セルの行は下方に入れ替えられます。

2)関数で行う方法
 データを表示したいセル(例:G2セル)に
  =SORT(FILTER(B:E,ISNUMBER(C:C),{"",""}),2)
 の式を入力すれば済みます。
(スピル機能が使えるものと仮定)

※ 上式のままだと、E列の備考欄が空白のセルは「0」と表示されます。
 (エクセルの関数の仕様)
 空白表示にしたい場合には、もう少し工夫が必要ですけれど。
    • good
    • 1
この回答へのお礼

ありがとう

お礼日時:2024/12/24 15:46

マクロでなら、あなたが期待される結果をSheet2へ出力することが可能です。

そのマクロを提示することは可能ですので、もし、マクロを希望される場合は、その旨補足してください。

一点、気になるのは、1月の日付です。人間が判断した場合は、翌年(2025年)であることが、推測可能ですが、本当に、2025年になってますか。
現在が2024年なので、1月20日と入力すると、通常は、2024年1月20日になります。
添付図のように日付のセル(添付図のF2)を選択すると、上部の赤線で囲んだところに2025/1/10のように年月日が表示されます。
そのようにして確認を行ってください。
2025年であれば、問題ありませんが、2024年の場合は、正しく並べ変えることができなくなります。そのため、1月の日付は、全て2025年に手作業であなたが修正しておく必要があります。
それは、可能でしょうか。可能であれば、マクロを提供できます。
「納期順に勝手に並べ替えられるようにしたい」の回答画像7
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
大変勉強になります。

マクロは使用した事がなく、全くの初心者で大変恐縮ですが
ご教授ご鞭撻のほど戴けますと大変助かります。
また、日付についてですが可能です。
確かに現在は2024年の1月扱いとなっておりますが調整可能であります。

お礼日時:2024/12/20 15:18

こんばんは



直接処理するのはそれなりに面倒なので、一旦、作業列に関数等で縦3列に全部を並べ替えて、それを元に処理を行った方が考えやすくなります。
あるいは、マクロで処理をしてしまった方が更に簡単とも言えます。


とは言いながら、関数での例を以下に。
ご提示のデータレイアウトを仮定して、例えばN2セルに以下の式を入力すれば、並び替えた結果が下方にスピルされます。

※ シート内の日付は、全てシリアル値であるものと仮定しました。
 スピル機能を使えるバージョンを想定しています。
 (旧いバージョンでは動作しません。)
 データの行範囲は最大99行目迄に仮設定してあります。

=SORT(FILTER(VSTACK(HSTACK(B2:B99,D2:E99,L2:L99&""),HSTACK(B2:B99,F2:G99,L2:L99&""),HSTACK(B2:B99,H2:I99,L2:L99&""),HSTACK(B2:B99,J2:K99,L2:L99&"")),ISNUMBER(VSTACK(D2:D99,F2:F99,H2:H99,J2:J99)),{"",""}),2)
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
大変勉強になります。

>>直接処理するのはそれなりに面倒なので、一旦、作業列に関数等で縦3列に全部を並べ替えて、それを元に処理を行った方が考えやすくなります
仰る通りですね。一旦一列にずらっと並ぶまでは自力で何とかできました…!
が、やはりその後の並び替えで苦戦中です。

関数での例までありがとうございました。
一度、Excelに挿入してみて、どうなるか見てみたのですが
初心者にはさっぱりで…お恥ずかしい限りです
時間をかけて紐解けたらいいなと思います

ありがとうございました

お礼日時:2024/12/20 15:24

>空欄のある品目が大量に上部にきてしまいます。


Sheet2か3でオートフィルター使って空白の行を非表示すればいいです。
    • good
    • 0

すみません「Sheet3に貼り付けて」は「Sheet3に値で貼り付けて」です。

    • good
    • 0

品目が10だとして、Sheet2のA,B,C列の最初の10行にSheet1のB,D,E列、次の10行にB,F,G列、...といったようにすべての品名-納入日-数量の組み合わせが入るよう計算式を入れます。

それを丸ごとコピーしてSheet3に貼り付けて納入日でソートすればいいでしょう。
(本当はマクロでやれば簡単なのですが)
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
そうなるとsheet3にて、空欄のある品目が大量に上部にきてしまいます。
(スクロールすればよいのですが…)
「納入日」の横が空欄だった場合、並び替えをしないまたは非表示にする
という関数があれば…と思っています。

マクロはさっぱりわからず…
しかし、調べてみたら確実な方法に感じました。
教えてくださってありがとうございます。

お礼日時:2024/12/18 17:32

》 sheet2(仮)で日付順に並び替えたものが表示されるような方法がよいかと考えております。


貴方が期待する「日付順に並び替えた」sheet2(詳細)をお示しあれッ!
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2024/12/18 17:32

>ネックなのは納入日が2回以上の場合、添付画像のように列に追加されるので一発での並び替えが出来ません。


それで質問者さんはどのような表示をしたいのですか?
    • good
    • 0
この回答へのお礼

どう思う?

お礼日時:2024/12/18 17:32

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A