- ベストアンサー
一覧表作成
品名毎の得意先毎の単価表(エクセル)を下記の様に作る。 品名 得意先 単価 A 1 50 A 2 60 A 3 55 B 1 80 B 3 60 品名 1 単価 2 単価 3 単価 A 50 60 55 B 80 60 ※品名・得意先の数は不特定。 品名に対して得意先のない時もある。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- MASUKUBO
- ベストアンサー率22% (4/18)
例えばシート1にお示しの最初の表がA,B,C列にあるとします。1行目は項目名として下行にデータがあるとします。 D列は作業列としてD2セルには次の式を入力して下方にオートフィルドラッグします。 =A2&B2 そこでお求めの表をシート2に作成するとしてお示しのような品名がA2セル以降に、B1セルからD1セルにかけては1単価…が入力されているとします。 B2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF($A2="","",IF(COUNTIF(Sheet1!$D:$D,$A2&COLUMN(A1))=0,"",INDEX(Sheet1!$C:$C,MATCH($A2&COLUMN(A1),Sheet1!$D:$D,0))))
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、上の表の「品名」と入力されているセルが、Sheet1のA1セルであり、下の表の「品名」と入力されているセルが、Sheet2のA1セルであるものとします。 又、Sheet3のA列~C列を作業列として使用するものとします。 まず、Sheet3のA1セルに次の数式を入力して下さい。 =IF(COUNTIF(Sheet1!$A$1:INDEX(Sheet1!$A:$A,ROW()),INDEX(Sheet1!$A:$A,ROW()))=1,ROW(),"") 次に、Sheet3のB1セルに次の数式を入力して下さい。 =IF(COUNTIF(Sheet1!$B$1:INDEX(Sheet1!$B:$B,ROW()),INDEX(Sheet1!$B:$B,ROW()))=1,ROW(),"") 次に、Sheet3のC1セルに次の数式を入力して下さい。 =INDEX(Sheet1!$A:$A,ROW())&","&INDEX(Sheet1!$B:$B,ROW()) 次に、Sheet3のA1~C1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。 次に、Sheet2のB2セルに次の数式を入力して下さい。 =IF(COLUMNS($A:B)>COUNT(Sheet3!$B:$B),"",INDEX(Sheet1!$B:$B,SMALL(Sheet3!$B:$B,COLUMNS($A:B)))) 次に、Sheet2のB2セルをコピーして、Sheet2のB2よりも右側にあるセルに貼り付けて下さい。 次に、Sheet2のA3セルに次の数式を入力して下さい。 =IF(ROWS($2:3)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!$A:$A,SMALL(Sheet3!$A:$A,ROWS($2:3)))) 次に、Sheet2のA3セルをコピーして、Sheet2のA4以下に貼り付けて下さい。 次に、Sheet2のB3セルに次の数式を入力して下さい。 =IF(COUNTIF(Sheet3!$C:$C,$A3&","&B$2)=0,"",SUMIF(Sheet3!$C:$C,$A3&","&B$2,Sheet1!$C:$C)) 次に、Sheet2のB3セルをコピーして、Sheet2の表中で単価を表示させる全てのセル(添付画像ではB2:E5の範囲)に貼り付けて下さい。 これで、品名毎の得意先毎の単価が、自動的に表示されます。