アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えていただければありがたいです。
購入品表、使用品表にはともに品名、箱数、個包装のそれぞれが記入されております。
購入表側には同一品名のものもありますが、個数等が異なります。
費用品表には品名と使用した数を記入しております。
教えていただきたい内容ですが、最終的な在庫数を知るためのマクロVBAについてのご相談です。
順番は良いのですが②購入品表の整理(重複品名は削除し、個数を和算)③品名が同じものを同じ行に並べ購入品表から使用品表の数を引き算し、在庫表を完成させる④。
このようなことは可能でしょうか?

..................D......E.........F..........G.......H.........I....
........1..............購入品.....................使用品...........
........2.......品名..箱数...個包装.....品名....箱数....個包装
①.....3.......あい....1.........6........かい.................5...
........4.......かい..............10.......あい.................1...
........5.......あい....2.........2...................................
........6.......さい....1..............................................
........7.......たい....5..........5..................................



..................D......E.........F..........G.......H.........I....
........1..............購入品.....................使用品...........
........2.......品名..箱数...個包装.....品名....箱数....個包装
②.....3.......あい....3.........8........かい.................5...
........4.......かい..............10.......あい.................1...
........5.......さい....1..............................................
........6.......たい....5.........5.................................


..................D......E.........F..........G.......H.........I....
........1..............購入品.....................使用品...........
........2.......品名..箱数...個包装.....品名....箱数....個包装
③.....3.......あい....3.........8........あい.................1...
........4.......かい..............10.......かい.................5...
........5.......さい....1..............................................
........6.......たい....5.........5.................................



..................A......B.........C.........
........1..............在庫..................
........2.......品名..箱数...個包装.....
④.....3.......あい....3.........7........
........4.......かい...............5.......
........5.......さい....1....................
........6.......たい....5.........5..........

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

  • へこむわー

    お世話になります。取得したいのは④です。
    引き算の件ですが購入品の箱数から使用品の箱数の引き算と、
    購入品の個包装から使用品の個包装の引き算となります。
    購入品の箱数=1、個包装=なしの状態で使用品の箱数=なし、個包装=3
    のような想定は無しでお願いいたします。
    必ず購入品の方が多くなりますので。また、リストに同一の購入品が存在する場合や使用品リストにも同一のものが存在する場合も想定されます。
    よろしくお願いいたします。
    (初めての投稿で、お礼の方に打ってしまいました。すみません)

    No.3の回答に寄せられた補足コメントです。 補足日時:2023/10/04 17:40
  • つらい・・・

    早速のご返答ありがとうございます。

    =UNIQUE(FILTER(①!D3:D1000,①!D3:D1000<>""))

    いくらかのパターンでやってみましたが、「この関数は正しくありません」
    と出ます。
    教えていただければ幸いです。

    すみません。初投稿で意味もわからず、お礼の方に書いてしまいました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/10/04 17:43

A 回答 (5件)

以下のマクロを標準モジュールに登録してください。


下記URLにアップしました。
https://ideone.com/NZ9Wf6
このサイトにアップするとエラーになるので、上記にアップしました。

①のシート名は"Sheet1"
④のシート名は"Sheet2"
の前提です。シート名が異なる場合は、
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
の箇所をあなたの環境のシート名に変えてください。
④のシートの見出しは、あなたが作成しておいてください。
マクロは、3行目以降を設定します。
    • good
    • 0
この回答へのお礼

dicT1(key) = dicT1(key) + ws1.Cells(wrow, "E").Value '箱数
dicT2(key) = dicT2(key) + ws1.Cells(wrow, "F").Value '個包装
型が一致しないメッセージが来ます。Selectに変更してみると、最後まで走ることがありました。ただし、いつも走るわけではありません。その時引き算で得た在庫数は全てマイナス表記で個数も全く違います。しかしながら項目の整理は出来ていました。
たけてる方でも難しいんだなと感じました。
ありがとうございました。

お礼日時:2023/10/06 13:52

No2です。



>いくらかのパターンでやってみましたが、「この関数は正しくありません」
>と出ます。
「いくらかのパターン」というのが何を意味しているのか不明ですけれど・・
「スピル機能が使える環境」とお断りしておいたはずですが、そもそも使えない環境で試しているのではありませんか?
バージョン2019までは対応していません。

2016以降であれば、以下のローテクで可能かと思います。
④のA3セルに以下の式を入れて、下方にフィルコピー。

=IFERROR(INDEX(①!D:D,AGGREGATE(15,6,ROW(A$3:A$1000)/(①!D$3:D$1000<>"")/(COUNTIF(OFFSET(①!$D$3,,,ROW(A$1:A$998)),①!D$3:D$1000)=1),ROW(A1))),"")
    • good
    • 2

捕捉要求です。


1.取得したい結果は、④の結果だけでしょうか。
それとも、②③の結果も取得したいのでしょうか。
(その場合は、②と③は同じなので③だけになりますが)

2.購入品の数から使用品の数の引き算は、
購入品の箱数から使用品の箱数の引き算
購入品の個包装から使用品の個包装の引き算
をすれば良いのでしょうか。
以下のようなケースは考慮するのでしょうか。
購入品の箱数=1、個包装=なし
の状態で
使用品の箱数=なし、個包装=3
のような場合は、どうなりますか。
購入品の箱数=1、個包装=-3
で良いのでしょうか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

お世話になります。取得したいのは④です。
引き算の件ですが購入品の箱数から使用品の箱数の引き算と、
購入品の個包装から使用品の個包装の引き算となります。
購入品の箱数=1、個包装=なしの状態で使用品の箱数=なし、個包装=3
のような想定は無しでお願いいたします。
必ず購入品の方が多くなりますので。また、リストに同一の購入品が存在する場合や使用品リストにも同一のものが存在する場合も想定されます。
よろしくお願いいたします。

お礼日時:2023/10/04 17:37

こんにちは



>このようなことは可能でしょうか?
もちろん可能ですけれど・・

②、③も結果として求めたいのか、④が得られさえすれば良いのか不明ですけれど、後者として解釈しました。

マクロでのご質問ですけれど、関数でも可能です。
マクロだと毎回実行しなければ結果を得られませんが、関数をあらかじめ設定しておけば、自動計算で即時反映することも可能です。

以下は、関数での例ですが、ご参考までに。
マクロの回答をお求めの場合は、他の回答をお待ちください。


④は別シートで良いものと解釈しました。
①のデータがあるシートの名を「①」と仮定します。
スピル機能が使える環境を想定してよければ、シート④のA3セルに
 =UNIQUE(FILTER(①!D3:D1000,①!D3:D1000<>""))
を入力すると、重複を除いた品名が下方にスピルされます。

シート④のB3セルに
=IF($A3="","",SUMIF(①!$D:$D,$A3,①!E:E)-SUMIF(①!$G:$G,$A3,①!H:H))
を入力し、これをC3セルにコピー
B3:C3セルをそのまま充分に下方までフィルコピーしておきます。

以上で、常時シート①の内容に応じた結果が、シート④に表示されるようになります。
この回答への補足あり
    • good
    • 1
この回答へのお礼

早速のご返答ありがとうございます。

=UNIQUE(FILTER(①!D3:D1000,①!D3:D1000<>""))

いくらかのパターンでやってみましたが、「この関数は正しくありません」
と出ます。
教えていただければ幸いです。

お礼日時:2023/10/04 17:28

できますよ。



でも、それって Excel ではなく Access の分野だなぁって思う。

・・・

あと、ここは「代わりに作ってください」と作業依頼する場所ではありませんので、そこのところをお忘れなく。
もしも作業依頼をしたいのでしたら、有料サイトで委託することを勧めます。
ごめんなさい。もしも作ってもらえると期待していたらその期待を裏切ることになってしまいます。

「自力で作るにあたって分からない所があるから教えて!」
という事であれば、何をどう試したのかを添えて、何が分からないのかを質問すると良いでしょう。

ちなみにこの質問は「マクロで行う事ができますか」というものですので、
「できますよ。」の答えになります。
そして、Excel よりも効率よく処理ができ、さらに大量のデータを扱う事もできる Access でやったほうがよいとアドバイスです。
    • good
    • 1
この回答へのお礼

ご丁寧にアドバイスありがとうございます。
Accessとの指摘も受けております。関数やマクロを作りながらようやく辿り着いた部分もありVBAに固執しました。もう少し頑張ってみます。

お礼日時:2023/10/04 17:15

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

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


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