Excel VBAで商品毎の数量差異を自動計算したい

このQ&Aのポイント
  • Excel VBAを使用して、各商品の定価販売数量と特売販売数量の差異を自動的に計算したいです。
  • 商品毎に週ごとの定価販売予定と定価実績、特売販売予定と特売実績があります。計算ボタンを押すと、定価販売差異と特売販売差異が求められます。
  • 商品数は約100種類で、各商品は6行(1~6)と4列(第1週~第4週)で表されます。Windows XP SP3とExcel 2003の環境で行いたいです。
回答を見る
  • ベストアンサー

Excel VBA 商品毎に数量差異の自動計したい

お世話になります。 添付の様なデータがあります。 各商品を4週に分けて週ごとの定価販売数量と特売販売数量を把握しようというものです。 やりたい事・・・ 各商品の定価販売予定と定価実績、特売販売予定と特売実績には数字が入っています。 [計算]というボタンを押したら、緑色セルにある定価販売差異と特売販売差異を求めたいのです。 数式は以下になります。 定価販売差異 = 定価実績 - 定価販売予定 特売販売差異 = 特売実績 - 特売販売予定 恐れ入りますが、どなたかご教授いただけませんでしょうか? よろしくお願い致します。 補足 ・商品数は可変ですが100種類ほどです。 ・各商品は必ず6行((1)~(6))と4列(第1週~第4週)あります。 環境 Windows XP SP3 Excel2003

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! ごめんなさい。投稿後に気づきました。 >.Value = .Offset(-2) - .Offset(-1) の行が逆です。 >.Value = .Offset(-1) - .Offset(-2) に変更してください。 (「With」の中の操作なので、必ずドット「.」を忘れないようにしてください。) 何度も失礼しました。m(_ _)m

yakkun2338
質問者

お礼

tom04さん、何度もありがとうございます! ご教授いただいて方法で実施できました!! エラーですが、私の手違いでした・・・申し訳ございませんm(_ _ )m 素早いご回答を何度もいただきまして本当にありがとうございました!!!

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 画像では4週目までしかありませんが、実際は5週目がある月もあると思いますので、 余計なお世話かもしれませんが、1行目項目行の最終列までとしています。 今回は画像のように規則正しく3行毎の操作だとすると Private Sub CommandButton1_Click() Dim i As Long, j As Long Application.ScreenUpdating = False For i = 4 To Cells(Rows.Count, "C").End(xlUp).Row Step 3 '←4行目から3行ごと For j = 4 To Cells(1, Columns.Count).End(xlToLeft).Column '←D列~1行目データの最終列まで With Cells(i, j) .Value = .Offset(-2) - .Offset(-1) End With Next j Next i Application.ScreenUpdating = True End Sub こんな感じではどうでしょうか?m(_ _)m

yakkun2338
質問者

補足

tom04さん、早速のご連絡ありがとうございます! またいつもありがとうございます。 ご教授いただきましたコードで実行してみました結果、下記コードの箇所で実行時エラーとなってしまいました。 .Value = .Offset(-2) - .Offset(-1) 実行時エラー13 型が一致しません。 当方で考えて修正すべきところですが、何分知識がないため、お手上げ状態です・・ 申し訳ございませんが、回避方法をご教授いただけますでしょうか?

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

こんちは。 えっと。。。 >>[計算]というボタンを押したら 「計算」というボタンを押させる意味は? 数式もフォーマットも決まってるなら、 >>定価販売差異 = 定価実績 - 定価販売予定 >>特売販売差異 = 特売実績 - 特売販売予定 この数式埋め込んでおけば、 >>各商品の定価販売予定と定価実績、特売販売予定と特売実績には数字が入っています。 これが入ってれば自動で計算、表示されるかと思いますよ。

yakkun2338
質問者

お礼

STICKY2006さん、この度はありがとうございました。 誠に恐縮ですが、他の回答者からVBAコードをご教授いただきましたので本件に関しましてCLOSEさせていただきました。 ご教授いただきました事は大変勉強になりました。 この度はありがとうございました。

yakkun2338
質問者

補足

STICKY2006さん、早速のご連絡ありがとうございます。 このフォーマットはマクロで元データを集計して、ピボットテーブルをかけた後に自動作成されるフォーマットなのです。 フォーマットの形は決まっていますが、シートで準備されているフォーマットではないので、マクロでこのフォーマットが作成される際にVBAで数式も入れたかったのです・・ m(_ _ )m よろしくお願い致します。

関連するQ&A

  • EXCEL VBA 条件による行の自動挿入

    お世話になります。 EXCEL VBAを使用して自動で行の挿入処理を実施したいと思っております。 やりたい事は添付図の表1を処理ボタンを押せば自動で表2のようにしたいのです。 表2の黄色部分が自動挿入させたい部分です。 例えば「表2作成」というボタンを押したら・・ [sheet1]にある表1をC1からC??の最終行までREADしてC??の文字列が [定価番販売実績]であれば・・ (1)[定価販売実績]の上の行に[定価販売予定]という行を挿入 (2)[定価販売実績]の下の行に[定価差異]という行を挿入 [得売販売実績]であれば・・ (3)[特売販売実績]の上の行に[特売販売予定]という行を挿入 (4)[特売販売実績]の下の行に[特売差異]という行を挿入 という作業を全商品に対して実施したいのです。 図では3商品ですが実際には変動ですが100~200品位です。 出来上がった新しい表2は別シートに表示できれば最高です! どなたか方法をご教授いただけませんでしょうか? よろしくお願い致します。 環境 Windows XP SP3 EXCEL2003

  • Excel VBA 複数条件で別シート検索したい

    お世話になります。 質問させていただきます。 会社から営業担当者の実績と計画を一覧で確認できる表が欲しい、と言われ格闘しております。 本件が出来ればほぼ完成できそうなので、大変恐れ入りますがどなたか実現方法をご教授いただけませんでしょうか? 添付図のようなシートが2つ(実績、計画)があります。 [計画シート] ・年月、担当者ごとにさらに企業別と商品別に定価と特売で売る数量を一月を4週(第1~4週)に分けて計画した表です。 [実績シート] ・計画シートで計画した数量と実績との差額を見るための表です。 やりたい事・・ 実績シートに[計画数量の転記]というボタンを配置して、このボタンをクリックしたら、実績シートのA2から最終データまでREADして、該当する計画シートの予定数量を実績シートに表示させたいのです。 計画シートの定価販売予定(黄色)--->実績シートの定価販売予定(黄色) 計画シートの特売販売予定(青色)--->実績シートの特売販売予定(青色) 流れとしましては・・ (1)実績シートの[年月]、[拠点]、[担当者]、[CD]、[品番]、[区分]をKEYに、計画シートの中を検索する (企業名と品名はKEYに含めません) (2)計画シートでKEYにマッチしたデータがあれば該当データのI??、J??、K??、L??の各週の計画数量を実績シートのI??、J??、K??、L??に入れ込む 補足 ・年月は1304~1403までです ・添付画像には表示されていませんが各担当者は1304~1403まで12ヵ月分の計画があります ・実績シートのI1、J1、K1、L1は年月によって表示が変化しますので、ここに表示される文字をKEYにはできません。(例 年月が1305の場合は1-12,13-19,20-26,27-31) ・実績シート、計画シートともにデータの構造(並び順)は同じです 分かりづらい説明で申し訳ございません・・・・・ どうかよろしくお願い致します。 環境 Windows XP SP3 Excel2003 以上です。

  • 予算実績差異分析について

    第74回1級原価計算の予算実績差異分析での問題です。。。。 資料として一部ですが、、 予算(利益計画)(20万個販売予定)  @40×20万個  実績(21.6万個販売) 販売費 972万個 が与えられていまして 問 利益計画用の予算と変動予算との差異を変動販売費数量差異とし、変動予算と実績との差異を変動販売費予算差異と名づけることにします。 このとき変動販売費予算差異と変動販売費数量差異を求めなさい。 解答を見てもつかわれている数字はこれだけでした 解答では変動販売費数量差異は @40×(20-21.6)でした。 なんとなく言ってるのはわかるのですが。。。。。 私の考え方ですが 問題にある変動予算というのにひっかかります。。。。。 変動予算はこの問題の場合@40×基準操業度だと思っていました。 だから基準操業度の値がわからなければ出せないと思っていました。            実際発生額                ↓                ┬                |                   | /           予算差異→|/                /|               /||     <変動費>    /|||← 変動予算(※             / |||            /  |||           /@40 | |      ――― ――――――――――――――              20 21.6基準操業度 (※)ここが変動予算と思っていました。 書いていて未熟な内容だと思う方がいると思いますがお許しください。。 よろしくお願いします。 下書き上ではうまく図が現れるのですが登録するとゆがんでしまいました。私の考えを書こうと思ったのですが気にしないでください。。

  • EXCEL VBA 条件による行の自動挿入(2)

    お世話になります。 前回の質問と重なる部分がありますが、EXCEL VBAを使用して自動で行の挿入処理を実施したいと思っております。 やりたい事は添付図の表1を処理ボタンを押すと自動で表2のようにしたいのです。 表1では各商品に"定価"、"特売"という2つの売り区分が表示されます。 各商品の売り区分はブランクはなく、必ず下記の3パターンのうちのどれかが表示されます。 (1)"定価"だけ表示 (2)"特売"だけ表示 (3)"定価"と"特売"両方表示 この表1に対して処理ボタンを押すと・・ 表2では各商品の売り区分に必ず"定価"と"特売"が上下に両方表示されるようにしたいのです。 (添付図の表2参照)。順番も"定価"が上、"特売"が下にしたいのです。 表2は別シートでも同じシートでも構いません。 どなたかお力添えいただけますでしょうか? よろしくお願い致します。 環境 Windows XP SP3 Excel2003

  • excel 商品リストにて 商品名を入力→単価自動的に表示

    商品リストを作成してます シート1に商品リスト、シート2に単価表を作成してます 商品リストAセルに日付、Bセルに商品名、Cセルに数量、Dセルに単価、Eセルに小計、Fセルに仕入先とします。 各商品にコードを指定するのではなく ダイレクトに、商品名で反映?です 商品名と数量を入力すると、単価→小計が出せる数式にしたいのですが 力不足のためご質問させていただきます VLOOKUPを使用してかな?と試みてはみました・・・・・・ 最終的には、商品ごとに1カ月の合計を出したいのですが どなたかお解りの方がいらっしゃいましたらお教えくださいますよう お願いいたします 質問の内容やわかりにくいところがありましたら 申し訳ありません どうぞよろしくお願いいたします

  • マイナスの時間の値

    「予定時間」と「実績時間」の差異をとる数式が、わからず困っています。 開始 終了 A 予定 開始 終了 B 実績 B-A 差異 9:00 10:00 1:00 9:03 9:54 0:51 -0:09 差異 -0:09 という値(シリアル値でもけっこうです)を得るための数式、 セルの書式を教えてください。

  • エクセルのピボットテーブル初心者ですが、下記の様なレイアウトは可能なのでしょうか?

    商品・販売数量・販売額があったとして、 レイアウトで「行」欄に商品「データ」欄に販売数量・販売額をドラッグします。 すると出来上がったピボットテーブルは、商品のセルをA列とするとB列のセルの上段=販売数量・下段=販売額となってしまいます。これを最初から販売数量がB列、販売額がC列としたいのですが可能でしょうか?質問の内容が分かりにくいかも知れませんがよろしくお願い致します。

  • エクセルでVBAを使うのかと思うのですが・・・

    エクセルである商品の一覧があります。 それぞれの数量合計を求めたいのですが ひとつの商品が複数行にわたって入力されており その合計を出したいのです。  ABCDEF 1 (1)  5 2 (1)  2 3 (1)  4 4 (2)  3   5 (2)  1 6 (2)  8 7 (3)  9 8 (4)  7 9 (4)  7 上記の表で(1)が合計何個、(2)が合計何個といった感じです。Eは個数です。 (1)は5+2+4=11なので別シートの商品名のみの一覧の(1)の横へ11と入力したいのです。 商品数が数百あり、行も数千あるため自動計算したいと思っています。 ちなみに今は行3の下に行の挿入を行い、セル1E~3Eまでを合計し、別のシートの商品一覧にC&P(値のみ)しています。 これではいつまでかかるか気が遠くなってきます。 VBAの出来る方よろしくお願いします。

  • エクセル 数式をコピーペーストしたい

    具体的に話をします セルA1に単価 セルB1に数量 セルC1に結果 ↑↑↑ この式をセルA2~100行目までペーストしたいです 普通にセルA1の数式をコピーしてペーストすると出来ませんでした まさか1行1行数式を入力するわけにはいかないので簡単なやり方があれば教えて下さい

  • エクセルで条件にあう複数行から最小日付を調べたい

    エクセル関数でどなたかご教授ください。 sheet1に発注日、商品コード、数量、入荷予定日が100行ほど入っています。 発注日順ですが、商品コードの同じ行は複数あり、また商品コード順ではありません。 (A) 1/20 CODE1 1,000 2/11 (B) 1/21 CODE2 2,500 2/04 (C) 1/21 CODE3 2,000 2/02 (D) 1/25 CODE1 1,500 2/14 (E) 1/27 CODE1 1,000 2/16 あるセルで商品コードを指定すると、数量合計と【最初の入荷予定日】が出るようにしたいのです。 数量はCODE1の場合sumifで(A+D+E) 3,500 と出せました。 ただ、 最初の入荷予定日=2/11 を求めるには、どんな関数を使えばいいのかわかりません。 ミニマム関数が使えれば、並び順にかかわらずできそうなのですが、 可変条件の場合どんな記述になるのでしょうか? よろしくご指導お願いいたします。

専門家に質問してみよう