質問: 以下の動作ができなくて困っています。
回答: マクロで対応することでもないでしょう。 作業列を使って関数式で十分対応できる内容です。 フィルターの操作などは関数式で自動で表を作りその表を基にお望みのデータを並べる操作を自動で行うことができます。並べるデータはすべての商品について一度に表示できますので一つの商品に限ってということではなく対応することにします。 始めのデータがシート1に有ってA2セルから下方に商品名がB列、C列、D列にはその商品についての数値が入力された表とします。 シート1のH2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,ROUNDDOWN(MAX(H$1:H1),-3)+1000,INDEX(H$1:H1,MATCH(A2,A$1:A1,0))+COUNTIF(A$2:A2,A2))) シート2のご希望のデータを並べることにしますが、A列からD列までには商品ごとに並べ替えたシート1のデータを表示させることにします。 A2セルには次の式を入力してD2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IFERROR(INDEX(Sheet1!$A:$D,MATCH(SMALL(Sheet1!$H:$H,ROW(A1)),Sheet1!$H:$H,0),COLUMN(A1)),"") 作業列ですがK2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=COUNTIF(A:A,A2),MAX(K$1:K1)+1,"")) L2セルには次の式を入力してN2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(COLUMN(A1)>3,"",IF(COUNTIF($A$2:$A2,$A2)=1,B2,IF(AND(COUNTIF($A$2:$A3,$A2)>1,COUNTIF($A$2:$A2,$A2)<=COUNTIF($A:$A,$A2)),L1&B2,""))) その後にご希望の表をF列からI列に表示するとしてF2セルには次の式を入力してI2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーすればよいでしょう。 =IF(COLUMN(A1)>3,"",IF(COUNTIF($A$2:$A2,$A2)=1,B2,IF(AND(COUNTIF($A$2:$A3,$A2)>1,COUNTIF($A$2:$A2,$A2)<=COUNTIF($A:$A,$A2)),L1&B2,""))) なお、作業列が目障りでしたらそれらの列を選択して「非表示」にすればよいでしょう。