Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
区切り文字毎にある条件で集計する
投稿日時: 23/06/02 18:07:48
投稿者: shima405

お世話になります。
 
例えば100円の商品が1個、600円の商品が1個、200円の商品が1個という内容を1つのセル内に以下のような記述でまとめて記入されているとします。
100@1/600@1/200@1
※@マークの後ろは個数を示す表記で/スラッシュは商品を区別するための区切り文字です。
 
そこで別セルに金額の合計を集計したいのですが、集計の条件として500円未満の商品は500円としてカウントさせたいのです。
上記の例で言えば、合計金額は900円ではなく、1600円で集計結果を出したい。
 
このような関数またはマクロはどのように作成すればよろしいでしょうか?
ご教授をお願いします。

回答
投稿日時: 23/06/02 18:54:00
投稿者: んなっと

Excelのバージョンは何でしょうか。
※今後は、質問時にExcelのバージョンを必ず選ぶようにしてください。

投稿日時: 23/06/03 07:31:58
投稿者: shima405

2019になります

回答
投稿日時: 23/06/03 08:14:41
投稿者: んなっと

          A   B                               C
1 100@1/600@1/200@1 1600 <y><x>100</x><z>1</z><x>600</x><z>1</z><x>200</x><z>1</z></y>
2    400@1/700@2 1900          <y><x>400</x><z>1</z><x>700</x><z>2</z></y>
3       300@3 1500                   <y><x>300</x><z>3</z></y>
 
C1
=IF(A1="","","<y><x>"&SUBSTITUTE(SUBSTITUTE(A1,"/","</z><x>"),"@","</x><z>")&"</z></y>")
下方向・↓
B1
=IFERROR(SUMPRODUCT(TEXT(FILTERXML(C1,"//x"),"[<500]5!0!0")*FILTERXML(C1,"//z")),"")
下方向・↓
C列非表示
 
 
※C列を使わないと
B1
=IFERROR(SUMPRODUCT(TEXT(FILTERXML("<y><x>"&SUBSTITUTE(SUBSTITUTE(A1,"/","</z><x>"),"@","</x><z>")&"</z></y>","//x"),"[<500]5!0!0")
*FILTERXML("<y><x>"&SUBSTITUTE(SUBSTITUTE(A1,"/","</z><x>"),"@","</x><z>")&"</z></y>","//z")),"")

投稿日時: 23/06/03 15:41:12
投稿者: shima405

早速のご回答ありがとうございます。
上手く計算できました。