ANo.4のワークシート関数を利用した、ナンチャッテVBAです。(出力結果はワークシート関数ではなく、単なる文字列データに変換しています。又、元データーの個数が多い場合には、For~Nextよりも高速で処理する事が可能です)
Sub macro()
With ActiveSheet.Range("J8:Q10")
.FormulaR1C1 = _
"=IF(OR(COUNT(R[-6]C2:R[-6]C8)=0,IF(COLUMNS(C10:C)=1,FALSE,IF(INDIRECT(""RC[-1]"",FALSE)="""",TRUE,COUNTIF(INDIRECT(""RC[-1]"",FALSE),MAX(R[-6]C2:R[-6]C8)&""が*個"")))),"""",SMALL(R[-6]C2:R[-6]C8,IF(COLUMNS(C10:C)=1,1,COUNTIF(R[-6]C2:R[-6]C8,""<=""&LEFT(INDIRECT(""RC[-1]"",FALSE),FIND(""が"",INDIRECT(""RC[-1]"",FALSE)&""が"")-1))+1))&""が""&COUNTIF(R[-6]C2:R[-6]C8,SMALL(R" & _
"[-6]C8,IF(COLUMNS(C10:C)=1,1,COUNTIF(R[-6]C2:R[-6]C8,""<=""&LEFT(INDIRECT(""RC[-1]"",FALSE),FIND(""が"",INDIRECT(""RC[-1]"",FALSE)&""が"")-1))+1)))&""個"")"
.Value = .Value
End With
End Sub
お礼
ありがとうございました。うまく動きました。アレンジして使わせていただきます。