• ベストアンサー

子部品の実際の使用数量を求める方法

お世話になります. Excel 上に,添付資料のような多段階の部品表が用意されています. 各列に, [階層の深さ][部品番号][使用数量][単位] が記入されています. 各行に入力されている[使用数量]は,親部品に対する使用数量です. ここで,各子部品の実際の使用数量を知るためには,親部品の使用数量と各子部品の使用数量とを掛け合わせて求めることになるのですが,それを自動処理する方法が思い付かず,お知恵を拝借いたしたく. よろしくお願いします.

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

こんな具合でしょう Sub m()   Dim r As Range, n As Integer, m As Integer   ' 表の左肩がA1セル以外の場合は Range("A1")を変更してください   ' データ範囲の取得   Set r = Range("A1").CurrentRegion   ' 1番目の個数の転記   r.Cells(2, r.Columns.Count).Offset(0, 1) = r.Cells(2, 3)   For n = 3 To r.Rows.Count     For m = n - 1 To 2 Step -1       If r.Cells(m, 1) = r.Cells(n, 1) - 1 Then         ' 親部品が見つかった         ' 親部品の個数と自身の個数の乗算    r.Cells(n, 5) = r.Cells(n, 3) * r.Cells(m, 4)         Exit For       End If     Next   Next End Sub 数式でやるなら配列数式になるでしょう 階層1の行には =C2 階層2以上行には =C3*INDEX($D$1:D2,MAX(ROW($D$2:D2)*($A$2:A2=A3-1))) と入力して SHIFT + CTRL + ENTER この数式をコピーして 次の行から最終行までを選択して貼り付け といった具合でしょう

oshibat
質問者

お礼

redfox63 さん,おはようございます. どうもありがとうございました. 最初,うまく動いていないようでしたが, > r.Cells(n, 5) = r.Cells(n, 3) * r.Cells(m, 4) を, r.Cells(n, 5) = r.Cells(n, 3) * r.Cells(m, 3) としたところ,乗算の結果も正しくなりました. For ... Next 文で, Step 値を負の値にすることで,こんなに便利になるとは驚きました. さらに VBA ではなく配列数式を使った解決法までご指南いただきまして,どうもありがとうございました. おかげさまで私もようやく一年を締めくくれそうです. 皆さん,よいお年をお迎え下さい.

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

「実際の使用数」を求める定義が今一つ不明な感じです。 親-子の関係はどのように決まっていて、そこからどの値を基に計算されるのか。。。?

oshibat
質問者

補足

言葉足らずで申し訳ないです. 親-子の関係について: ある子部品から見て上の行に自分よりも小さい数字の階層番号を持つ部品が見つかったら,それが自分の親,という法則で,階層番号[1]が出てきたらそれより小さい値はないので終了,ということです. 値(実際の使用数)は,自分自身の使用数量と,自分の親,さらにその親...の使用数量を掛け合わせた結果得られた値です.

関連するQ&A

  • ファイルメーカーPro7で、階層構造の部品表を表示したい

    ファイルメーカーPro7で階層構造の部品表を表示したいのですが、方法がわかりません。ちょうどエクスプローラーの左側の画面のような感じにしたいのですが、ポータルの中にポータルは作れないので困っています。 現在は、品番と品名のテーブル、親品番、子品番、数量のテーブルがあり、1階層だけ表示できています。(ただのポータルです) 新しくテーブルを作り、親品番、子品番、数量、階層の深さを記録していけばよいように思うのですが、どのように実現すればよいか分かりません。良いお知恵をお貸しください。よろしくお願いします。

  • エクセルで表の検索方法を教えてください。

    エクセルで表の検索方法を教えてください。 添付画像のように A1:D16 に表があります。 A18:D18 に1行のデータがあります。 このデータが、表の何番目にあたるのか検索する方法を知りたいです。 すぐに思いつくのは、作業列を1列用意し、そこにA列からD列の各行の値を結合して表示させ、作業列の値で検索することですが、それ以外の関数での方法を知りたいです。

  • 部品表ごとに枠線を引く方法教えてください。。。

    知恵をおかし下さい。 以下の部品表があるとします。(初めは枠線は無いとします) 例えば、親品目AはX,Yによって製造されます。 ボタン一つで親品目ごと枠線を自動で引く方法を教えてください。    A列    B    1 親品目   子品目   _______   | A    X  |     3| A    Y  |   |_____ |   _______   4|  B   X  | 5|  B   Y  |  6|  B   Z   |   |______| VBAを使って作成したいと思っています。よろしくお願いします。

  • EXCELの関数を使用した注文書の作成方法

    EXCELの関数を使用した注文書の作成方法 下記表の数量欄(列B:行2、列B:行3)に数量を入力すると、隣の金額(列C)と掛け合わさり 合計欄(列B:行9)に反映させるにはどのような関数を使用すればよいのでしょうか。 似た質問を調べIF関数を使用し挑戦しましたが、エラーが出てなかなか上手くいきません… 初歩的な質問で恥ずかしい限りですが、何卒ご教授よろしくお願い致します。     列A     列B       列C    行1  商品名   数量       金額                      行2  椅子             10,000                          行3  机               15,000                                                           ・ ・ ・ 行9  合計    ?

  • 部品表

    下のようなデータからストラクチャー部品表をつくるVBAプログラムを教えてもらいたいのですが。    A列      B   C 1行 データ番号 親品目 子品目 2  1       X    A  3  2       X    B  4  3       Y    A 5  4       Y    C  6  5       B    C  7  6       B    D  このデータ(実際は任意に入力)から下のような表を作成 X――A   |   ―B――C       |       ―D Y――A   |   ―C 

  • Excel2007一覧表からラベル用紙に印刷したい

    Excel2007を使用しており、このような一覧表を作成しています。 | 機種名 | 注文番号 | 納期 | ――――――――――――――――― | NO1  |  部品名   | 数量 | ――――――――――――――――― | NO2  |  部品名   | 数量 | ――――――――――――――――― | NO3  |  部品名   | 数量 | ―――――――――――――――――    ・        ・        ・    ・        ・        ・    ・        ・        ・ この一覧表から、ひとつのNOごと(ひとつの部品ごと)にラベル印刷したいです。 (現品票として使用します) ※印刷イメージを添付しますのでご参照下さいませ。 一覧表は既に過去Excelで作成済のものですので、Wordで差し込み印刷したりということではなく、Excelから直接印刷したいと考えています。 このようなことは可能でしょうか。 可能であれば方法をご教授頂けませんでしょうか。 また、Excel上で無理なようであれば他にどのような方法があるか教えて頂ければと思います。 宜しくお願い致します。

  • 電子部品の接続方法

    電子部品の接続方法 下記の電子部品の接続方法を教えていただきたく思います。 (添付画像参照) 【部品】 ・DCファン(飛び出た金属の部分を切り捨てて、2股にコードを分けて繋ごうと思っています。 ・スイッチ ・赤と青のコード ・可変抵抗器(金属部分が、”3個×2列”の物です。) ・AC/DCアダプター ・DCジャック(3つ金属部分があります) また上記パーツを接続して使用した場合、接続機器がショートしたり、燃えたりすることは考えられますでしょうか? それらを防ぐために防止策等ございましたら、そちらもお教えいただけると嬉しく思います。 私、電子部品に関して素人なため、ぜひ皆様のお知恵をお借りしたく考えております。よろしくお願いします。

  • エクセルのグループ別集計について

    縦に種類別にA,B,Cがランダムに並んでいます。 横に数量1から6まで6列並べたら表があります。 この表から列ごとに種類別(A,B,C)に集計する方法を教えてください。 サンプル表を添付します。

  • 抽出の仕方教えてください!

    いい方法を教えてください! 例えば、下図の表があり部品Aを100個単位で買うと単価300円し、1000個単位で買うと単価が280になるといった見方をする単価表があるとして、SHEET1にあるとします。 SHEET2で部品名と購入単位個数(ロット数)を入力すると単価が自動抽出できる良い方法を教えてください。 A列   B    C    D     100個 1000個  2000個 部品A 300   288   260 部品B 500   480   460 部品C 320   318   302 部品D 120   110   102 宜しくお願いします!! 

  • 備考欄の数字の効率的な削除方法

    添付のようなエクセル資料で、月次の予算と実績を作成しております。 備考欄の予算の数量と実績の数量を一発で削除する方法はございますか? もしくは片方(予算 or 実績)を一発で削除する方法はないでしょうか? このようなエクセル資料を使用している事自体が時代遅れなのかもしれないですが、 解決策があればご教示お願いします。

専門家に質問してみよう