• ベストアンサー

Excel(エクセル)での特定文字以降の文字列抽出&合計

Excelでの 特定文字以降の文字列抽出&条件による振り分け&合計 を自動的にする事は可能でしょうか? 例えば図のように セルB2に3500×30 セルE1に3500×20と入力されている時 セルF9に50と表示したいです。 よろしくお願いいたします。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.8

[回答番号: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))}

miruo_o
質問者

お礼

助かりました。 何度も回答していただき、 本当にありがとうございました!

その他の回答 (8)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.9

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))))

miruo_o
質問者

お礼

助かりました。 回答していただき、 本当にありがとうございました!

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.7

#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)))

miruo_o
質問者

お礼

助かりました。 何度も回答していただき、 本当にありがとうございました!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

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

miruo_o
質問者

お礼

私でも理解できるやり方なので、 他のデータ整理にも役立つヒントを わかりやすい画像付で教えていただき 本当にありがとうございました!

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.5

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を押します。

noname#204879
noname#204879
回答No.4

すみません、[回答番号: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))

miruo_o
質問者

補足

回答していただき ありがとうございます(*- -)(*_ _)ペコペコ この式で望んでいた事ができました! でも、ごめんなさい! 忘れていたことがあったので補足させてください。 抽出選択範囲のB列やE列には セル内が空白や文字列(例:「売上無し」など)のところが たまにありました。 その場合、 教えていただいた式ではエラーになってしまいました。 セル内が空白や文字列が混ざっていても大丈夫な式を もう一度、 教えていただけないでしょうか? よろしくお願いいたします。

noname#204879
noname#204879
回答No.3

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.2

No.1です! たびたびごめんなさい。 投稿した後で気づいたのですが、 前回の数式は同列に「×」の前に同じ数値があった場合 上の行だけを拾い出してしまいますので、 希望通りにはならないと思います。 無視してください。 時間が許せば、他の方法を考えてみたいと思います。 どうも何度も失礼しました。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 参考になるかどうか判りませんが・・・ 無理矢理って感じの方法です。 配列数式になってしまいますので、 この画面からコピー&ペーストしただけではエラーになると思います。 ↓の数式をこの画面から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

関連するQ&A

  • Excel(エクセル)での特定文字以降の文字列抽出

    Excelでの 特定文字以降の文字列抽出&条件による振り分け を自動的にする事は可能でしょうか? 例えば図のように セルA2に1200×15 セルA3に2300×3 と入力されている時 C2に15 B3に3 と表示したいです。 できれば、 後で合計を出したいので数字として扱いたいです。 よろしくお願いいたします。

  • EXCEL関数 特定の文字列以降の文字の抽出について

    こんにちは。 以前にも似たような質問をしたのですが、 Excelでセルの中の、特定の文字列以降の文字列を全て抜き出せる関数がありましたら教えてください! 例:A1セルに、 「~  detailed_description: ~  ~」 と記載されています。 「detailed_description:」以降の文字(「detailed_description:」は含まない)を抽出したいです。 ※(「detailed_description:」以降の文字数は一定ではないです。 今回もなかなかうまく行かず、苦労しています。。。 ご教示ください。よろしくお願いいたします。

  • エクセルのセル内にある文字列を特定語で抽出したい

    エクセルでQ&A集を作っています。各セルに文字列で質問と回答を文字列で入力していますが、その際に、キーワードですぐに抽出できるようにしたいです。「検索」機能だと抽出リストが出来ず、「リスト」機能だと文章中の特定語での抽出が出来ず、困っています。宜しくお願いします。

  • エクセル 特定の文字列を抽出・挿入

    例えば A列にあるセルの中から特定の文字列を検索・抽出して、その特定の文字列だけB列に挿入していく関数はありますか? またはA列にあるセルの中から特定の文字列に挟まれた文字列を検索・抽出してその特定の文字列だけB列に挿入していく関数はありますか? マクロを組まないと難しいのでしょうか?

  • エクセルで特定文字列の抽出する方法を教えてください。

    エクセルで特定文字列の抽出する方法を教えてください。 たとえばG00X-483.931Y-412.2R5.0 と書かれてるセルからXの値「-483.931」だけを抽出したいのですが分からなくて困ってます。 またこの数値は8文字と決まってないのでX~Yの間の数値と言う感じで抽出したいです。 よろしくお願いします。

  • エクセル ある文字列を入れるとある文字列を返す

    エクセルでの関数、ど素人です。一応自分で調べたのですが、無理なので質問させていただきます。よろしくお願いいたします。 エクセルで、時刻ですが文字列として1745~2345までを手入力します(1745,とか2000とか2330とか。。。。。) 入れた文字列によって、すぐ横のセルに1745、1800、1815であれば8.00、1830からは0.25刻みで8.25、1845であれば8.50、1900であれば8.75。。。。2330であれば13.25、2345であれば13.50と言ったように、入力した文字列に対しある特定の文字列を自動的に入れたいのですが、どのような関数を使えばよろしいのでしょうか。 私が行おうとしたのは、別シートに文字列一覧を作り、if(特定のセル(手入力するセル)=別シートの1745~2345まで、横のセル=別シートの8.00、8.00、8.00~13.50まで)や、sumif、lookupを使ってみましたが撃沈です。 どなたか教えていただきたく、お願いいたします。

  • エクセルで特定の範囲の文字列を抜き出したいのですが関数がわかりません。

    エクセルで特定の範囲の文字列を抜き出したいのですが関数がわかりません。 抽出の条件は「セルの中の【 】でくくられた部分」(【】も含む)です。 各セル内の文字列はすべてこの【】から始まる文章で構成されているのですが、 【】内の文字数はそれぞれ違うという状態です。 文字数が固定の場合の関数は思いつくのですが、異なる場合がよくわかりません。 よろしくお願いします。

  • エクセルで文字列の中の特定の文字の抽出

    お世話になります。 エクセルで、B列のセルの文字列の中に特定の文字 (例えば文字列abcdefの特定の文字cd)があったら A列のセルにOKという文字を出すということはできますか?

  • 【エクセル】特定の文字列(番号)の行だけ抽出したい

    現在資料を作っていて、またもや困ったことがあったので教えてください。 特定の文字が含まれる行のデータを抽出するにはどうしたらいいのでしょうか。 具体的にいうと ____|A|B|C|D|E| [01]|F|1|0|3|5| [02]|G|0|2|5|7| [03]|H|0|3|4|8|    中略 [21]|F|0|0|9|6| [22]|G|6|4|5|1| [23]|H|3|3|2|2|    中略 [31]|F|2|2|4|6| [32]|G|5|3|7|9| [33]|H|8|2|6|4|    以下略 *[]の中身は行番号 一番上段のA B C D Eは列の軸 |はセルの区切りを示している のような表でGのBのところ(行番号が10n+2のところのA列)だけのデータを合計したいのです。 つまり上の表でいえば =A2+A22+A32+A42+A52…(=0+6+5+…)ということをしたいのですが 数が600行近くあるので手入力だとかなり面倒くさいのです。 SUM関数を使うのかなとも思いましたが、それでもセルの指定の面倒くささは変わらないし… 何か簡単にできるようにする方法がありましたらご教授お願いします。

  • エクセル フィルタオプションで 特定の文字列を含む行を全て抽出する方法がわかりません

    エクセル2002を使用しています。 エクセルフィルタオプション設定で、特定の文字列を含む行を全て抽出する方法がわかりません。 たとえば sheet1    A    B    C    1 項目1 項目2 項目3  2  あ   い    う    3  う        あ    4  え        い 5      う       Sheet2   A         B         1 抽出文字列 2 あ  3   4 (計算式) 5 (以下抽出結果)   上記のようなデータがあり、sheet2!a5以降に「あ」が該当する行を全て抽出するといった式を組みたいのですが、 Sheet2 a2に抽出文字を入力し、a4に「=or(sheet1!a2=a2,sheet1!=a2,sheet1!=a2)」といった検索条件式を組み、フィルタオプションで、 ・リスト範囲 Sheet1!$a$1:$c$5 ・検索条件範囲 $a$3:$a$4 ・抽出範囲 $a$5  と指定するのですが、うまく抽出できません。 ちなみに抽出対象が文字列でなく数字なら(たとえばSheet1のデータの文字をあ→1 い→2のように全て数字に置き換えてSheet2!a2に1を入力)抽出できるのですが・・・ 文字列をセル参照して条件式を組む場合に何か気をつけることがあるのでしょうか?文章が長くなってしまい申し訳ありません。良い方法があればご教授お願いします。

専門家に質問してみよう