• ベストアンサー

一覧表作成

品名毎の得意先毎の単価表(エクセル)を下記の様に作る。 品名 得意先 単価 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  ※品名・得意先の数は不特定。 品名に対して得意先のない時もある。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 回答番号ANo.1です。  書き忘れておりましたが、ANo.1の方法であれば、上の表をSheet1上に作成しておくだけで、Sheet2の表中に、品名と得意先が、自動的に、且つ重複無しに表示される様になっています。

その他の回答 (2)

  • MASUKUBO
  • ベストアンサー率22% (4/18)
回答No.2

例えばシート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)
回答No.1

 今仮に、上の表の「品名」と入力されているセルが、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の範囲)に貼り付けて下さい。  これで、品名毎の得意先毎の単価が、自動的に表示されます。

この投稿のマルチメディアは削除されているためご覧いただけません。