- ベストアンサー
Excel(エクセル)での特定文字以降の文字列抽出&合計
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
[回答番号:No.4この回答への補足]に対する回答、 》 セル内が空白や文字列が混ざっていても大丈夫な式を… 多分ご理解いただけない“寿限無”的な配列数式(とは何かはご自分で勉強してください。ソレに関する質問に私は回答しません)になりますが… E9: {=SUMPRODUCT((IF(ISERROR(FIND("X",$B1:$B5)),0,LEFT($B1:$B5,FIND("X",$B1:$B5)-1)+0)=E8)*IF(ISERROR(FIND("X",$B1:$B5)),0,MID($B1:$B5,FIND("X",$B1:$B5)+1,3)+0))+SUMPRODUCT((IF(ISERROR(FIND("X",$E1:$E5)),0,LEFT($E1:$E5,FIND("X",$E1:$E5)-1)+0)=E8)*IF(ISERROR(FIND("X",$E1:$E5)),0,MID($E1:$E5,FIND("X",$E1:$E5)+1,3)+0))}
その他の回答 (8)
- KURUMITO
- ベストアンサー率42% (1835/4283)
E9セルには次の式を入力して、Ctrl+Shift+Enterで確定し、H9セルまでオートフィルドラッグします。 =SUMPRODUCT((IF(NOT(ISBLANK($B1:$B5)),(LEFT($B1:$B5,4)*1=E$8)*(MID($B1:$B5,6,2)*1))))+SUMPRODUCT((IF(NOT(ISBLANK($B1:$B5)),(LEFT($B1:$B5,4)*1=E$8)*(MID($B1:$B5,6,2)*1))))
お礼
助かりました。 回答していただき、 本当にありがとうございました!
- okormazd
- ベストアンサー率50% (1224/2412)
#5です。 長いですが、下記で空白等でもエラーは出ないでしょう。 配列数式です。 E9:H9 =SUM(IF(ISERROR(FIND("×",$B$1:$B$5)),0,IF(LEFT($B$1:$B$5,FIND("×",$B$1:$B$5)-1)*1=E$8,RIGHT($B$1:$B$5,LEN($B$1:$B$5)-FIND("×",$B$1:$B$5))*1)),0)+SUM(IF(ISERROR(FIND("×",$E$1:$E$5)),0,IF(LEFT($E$1:$E$5,FIND("×",$E$1:$E$5)-1)*1=E$8,RIGHT($E$1:$E$5,LEN($E$1:$E$5)-FIND("×",$E$1:$E$5))*1,0)))
お礼
助かりました。 何度も回答していただき、 本当にありがとうございました!
- tom04
- ベストアンサー率49% (2537/5117)
No.1・2です! 何度もごめんなさい。 前回のお詫びのしるしにと思って色々考えたのですが なかなか良い案が浮かびませんでした。 無理矢理になりますが、 ↓の画像のようにSheet2に作業用の表を作ってそれを合計するようにしてみました。 下側がSheet2です。 Sheet2のA3セルに =IF(ISNUMBER(FIND(INDEX(Sheet1!$E$8:$H$8,,INT(COLUMN(B1)/2)),Sheet1!$B1)),ROW(A1),"") B3セルに =IF(ISNUMBER(FIND(INDEX(Sheet1!$E$8:$H$8,,INT(COLUMN(B1)/2)),Sheet1!$E1)),ROW(A1),"") として、A3・B3セルを範囲指定し、列方向(H列まで)コピーした後にそのまま下へコピーします。 これで必要数値が含まれているSheet1の行番号が表示されます。 J3セルは =IF(A3="","",MID(INDEX(Sheet1!$B$1:$B$5,A3),FIND("×",INDEX(Sheet1!$B$1:$B$5,A3))+1,3)*1) K3セルは =IF(B3="","",MID(INDEX(Sheet1!$E$1:$E$5,B3),FIND("×",INDEX(Sheet1!$E$1:$E$5,B3))+1,3)*1) としてさっきとおなじようにJ3・K3を範囲指定し、オートフィルで列方向と行方向にコピーします。 これで「×」より右側の数値が表示されますので、 最後は単純にSheet1のE9セルは =SUM(Sheet2!J3:K7) という具合にして、それぞれ2列ずつの合計をしているだけです。 今回は配列数式はありません。 Sheet1のE8~H8の数値が変わっても対応できるように考えると この程度しか思いつきませんでした。 以上、長々と書きましたが 何度もごめんなさいね。m(__)m
お礼
私でも理解できるやり方なので、 他のデータ整理にも役立つヒントを わかりやすい画像付で教えていただき 本当にありがとうございました!
- okormazd
- ベストアンサー率50% (1224/2412)
B9:=SUM(IF(LEFT($B1:$B5,FIND("×",$B1:$B5)-1)*1=E$8,RIGHT($B1:$B5,LEN($B1:$B5)-FIND("×",$B1:$B5))*1,""))+SUM(IF(LEFT($E$1:$E$5,FIND("×",$E$1:$E$5)-1)*1=E$8,RIGHT($E$1:$E$5,LEN($E$1:$E$5)-FIND("×",$E$1:$E$5))*1,"")) 配列数式です。 数式入力後、数式バーにカーソルがある状態で、Ctrl+Shift+Enterを押します。
すみません、[回答番号:No.3]は間違いでした。次式をお試しください。 E9: =SUMPRODUCT((LEFT($B1:$B5,FIND("X",$B1:$B5)-1)+0=E8)*MID($B1:$B5,FIND("X",$B1:$B5)+1,3))+SUMPRODUCT((LEFT($E1:$E5,FIND("X",$E1:$E5)-1)+0=E8)*MID($E1:$E5,FIND("X",$E1:$E5)+1,3))
補足
回答していただき ありがとうございます(*- -)(*_ _)ペコペコ この式で望んでいた事ができました! でも、ごめんなさい! 忘れていたことがあったので補足させてください。 抽出選択範囲のB列やE列には セル内が空白や文字列(例:「売上無し」など)のところが たまにありました。 その場合、 教えていただいた式ではエラーになってしまいました。 セル内が空白や文字列が混ざっていても大丈夫な式を もう一度、 教えていただけないでしょうか? よろしくお願いいたします。
E9: =SUMPRODUCT((LEFT($B1:$B5,FIND("X",$B1:$B5)-1)+0=E8)*($G1:$G5))+SUMPRODUCT((LEFT($E1:$E5,FIND("X",$E1:$E5)-1)+0=E8)*($J1:$J5))
- tom04
- ベストアンサー率49% (2537/5117)
No.1です! たびたびごめんなさい。 投稿した後で気づいたのですが、 前回の数式は同列に「×」の前に同じ数値があった場合 上の行だけを拾い出してしまいますので、 希望通りにはならないと思います。 無視してください。 時間が許せば、他の方法を考えてみたいと思います。 どうも何度も失礼しました。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 参考になるかどうか判りませんが・・・ 無理矢理って感じの方法です。 配列数式になってしまいますので、 この画面からコピー&ペーストしただけではエラーになると思います。 ↓の数式をこの画面からE9セルに貼り付け後、F2キーを押すか、数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrl+Enterキーで確定してください。 数式の前後に{ }マークが入り配列数式になります。 E9セルの数式は =MID(INDEX($B$1:$B$5,MAX(INDEX((ISNUMBER(FIND(E$8,$B$1:$B$5)))*ROW($A$1:$A$5),))),FIND("×",$B$1:$B$5)+1,3)+MID(INDEX($E$1:$E$5,MAX(INDEX((ISNUMBER(FIND(E$8,$E$1:$E$5)))*ROW($A$1:$A$5),))),FIND("×",$E$1:$E$5)+1,3) としてShift+Ctrl+Enterキーで確定です。 (数式の中にある「3」という数字は「×」の後が3桁まで対応できるようにしています。 桁数が多いのあればもっと大きな数字にしても問題ありません。) そのままH9セルまでオートフィルでコピーすると 画像のような感じになります。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m
お礼
助かりました。 何度も回答していただき、 本当にありがとうございました!