Sheet1に製品番号と在庫数を入力し、各製品番号のシートに材料番号等のデータを入力しておけば、使用されている全ての材料番号が昇順に並べられている一覧表が自動的に作成され(材料番号を網羅したリストを元データとして作成しておく必要が無い)、その横に材料名や総使用数が自動的に表示される方法です。
今仮に、Sheet1において、製品番号が入力されている列がA列であり、在庫数が入力されているセルがC列であるものとします。
同様に、各製品番号のシートにおいて、材料番号が入力されている列がA列であり、使用数が入力されているセルがC列であるものとします。
又、「作業用」というシート名のシートを新たに作成しておき、そのA列~H列を作業列として使用するものとします。
まず、
作業用
というシート名のシートを新たに作成して下さい。
次に、作業用シートのB1セルに次の関数を入力して下さい。
=IF(COUNTIF(Sheet1!$A$1:INDEX(Sheet1!$A:$A,ROW()),INDEX(Sheet1!$A:$A,ROW()))=1,INDEX(Sheet1!$A:$A,ROW()),"")
次に、作業用シートのC1セルに次の関数を入力して下さい。
=IF(ISERROR(1/COUNT(INDIRECT("'"&$B1&"'!C"&MATCH("使用数",INDIRECT("'"&$B1&"'!C:C"),0)&":C"&ROWS(C:C)))),"",MATCH(9E+307,INDIRECT("'"&$B1&"'!C:C"))-MATCH("使用数",INDIRECT("'"&$B1&"'!C:C"),0))
次に、作業用シートのA1セルに次の関数を入力して下さい。
=IF(ISNUMBER($C1),SUM($C$1:INDEX($C:$C,ROW()-1)),"")
次に、作業用シートのA1~C1の範囲をコピーして、同じ列の2行目以下に、(Sheet1のリストの行数を上回るのに十分な行数となるまで)貼り付けて下さい。
次に、作業用シートのH2セルに次の関数を入力して下さい。
=IF(ROWS($2:2)>SUM($C:$C),"",IF(ISNUMBER(INDIRECT("'"&VLOOKUP(ROWS($2:2)-1,$A:$B,2)&"'!C"&ROWS($2:2)-LOOKUP(ROWS($2:2)-1,$A:$A)+MATCH("使用数",INDIRECT("'"&VLOOKUP(ROWS($2:2)-1,$A:$B,2)&"'!C:C"),0))),INDIRECT("'"&VLOOKUP(ROWS($2:2)-1,$A:$B,2)&"'!C"&ROWS($2:2)-LOOKUP(ROWS($2:2)-1,$A:$A)+MATCH("使用数",INDIRECT("'"&VLOOKUP(ROWS($2:2)-1,$A:$B,2)&"'!C:C"),0))*SUMIF(Sheet1!$A:$A,VLOOKUP(ROWS($2:2)-1,$A:$B,2),Sheet1!$C:$C),""))
次に、作業用シートのF2セルに次の関数を入力して下さい。
=IF(ISNUMBER($H2),INDIRECT("'"&VLOOKUP(ROWS($2:2)-1,$A:$B,2)&"'!R"&ROWS($2:2)-LOOKUP(ROWS($2:2)-1,$A:$A)+MATCH("使用数",INDIRECT("'"&VLOOKUP(ROWS($2:2)-1,$A:$B,2)&"'!C:C"),0)&"C"&COLUMN(INDIRECT("C3"))+COLUMN()-COLUMN($H$1),FALSE),"")
次に、作業用シートのF2セルをコピーして、作業用シートのG2セルに貼り付けて下さい。
次に、作業用シートのE2セルに次の関数を入力して下さい。
=IF(OR($F2="",COUNTIF($F$1:$F2,$F2)>1),"",COUNTIF($F:$F,">"&$F2))
次に、作業用シートのE2~H2の範囲をコピーして、同じ列の3行目以下に、(全ての製品番号のシートのリストの行数を合計した数を上回るのに十分な行数となるまで)貼り付けて下さい。
次に、Sheet2のA2セルに次の関数を入力して下さい。
=IF(ROWS($2:2)>COUNT(作業用!$E:$E),"",IF(VLOOKUP(LARGE(作業用!$E:$E,ROWS($2:2)),作業用!$E:$G,COLUMNS(作業用!$E:F),FALSE)="","",VLOOKUP(LARGE(作業用!$E:$E,ROWS($2:2)),作業用!$E:$G,COLUMNS(作業用!$E:F),FALSE)))
次に、Sheet2のA2セルをコピーして、Sheet2のB2セルに貼り付けて下さい。
次に、Sheet2のC2セルに次の関数を入力して下さい。
=IF(OR(INDEX($A:$A,ROW())="",COUNT(Sheet1!$C:$C)=0),"",SUMIF(作業用!$F:$F,$A2,作業用!$H:$H))
次に、Sheet2のA2~C1の範囲をコピーして、同じ列の2行目以下に、(全種類の材料番号を表示するのに十分な行数となるまで)貼り付けて下さい。
以上です。