• ベストアンサー

Excelで特定の文字が入ったデータをキーにして、集計したい。

Excelで | **(a-1) | 4 | | &&(a-1) | 2 | | !!(a-2) | 1 | | $$(a-2) | 7 | のような表があった場合に、 | (a-1) | 6 | | (a-2) | 8 | ように集計することはできるのでしょうか。 (**などは任意の文字列です) ある特定の文字(コード)が入ったデータをキーとして、集計するということです。 初歩的な質問かもしれませんが、ご容赦くださいませ。どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

集計する為のキーを別のセルに抽出した方がやりやすいと思います。 **(a-1)からRight関数で5文字抜き出すとか、Find関数で(a-1)を探して、なければ(エラーなら)0であれば(1以上)a-1と表示するとか方法は色々あると思いますが、**(a-1)をそのままにしておくよりは、分けた方が使い勝手が良くなりませんか?

bird72
質問者

お礼

早速のお返事、ありがとうございます。 なるほど。コード部分を抜き出したいところのですが、コードの部分(a-1など)は文字数もバラバラで、文字数では抜き出しようがないかと思います。 コードをくくっている()で抽出することはできるのでしょうか。 ()でくくられている文字列を抽出するにはどうしたらよいでしょうか。おわかりでしたら、補足をお願いいたします。

その他の回答 (4)

  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.5

はじめまして >()でくくられている文字列を抽出するにはどうしたらよいでしょうか。 たとえば対象がA列で、C列があいているとしたら、C1セルに 「=MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1)」 でよいと思います。 「()」も必要でしたら 「=MID(A1,FIND("(",A1),FIND(")",A1)-FIND("(",A1)+1)」 なお「(」は半角の「(」にしてありますので、もし全角の「(」でしたら、式の中の「"("」や「")"」を「"("」「")"」に直してください。 的外れでしたらごめんなさい。

bird72
質問者

お礼

ありがとうございます。 やってみましたら、完璧でした。 式の意味がわからないので、後で勉強してみますね。 嬉しいなぁ。 これでようやく次のステップへ進めます。 ありがとうございました。

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.4

A B 1 **(a-1) 4 2 &&(a-1) 2 3 !!(a-2) 1 4 $$(a-2) 7 5 6 (a-1) 6 7 (a-2) 8 B6=SUMIF(A1:A4,"*"&A6,B1:B4) こんな感じかな

bird72
質問者

お礼

ありがとうございます。 とてもわかりやすいですね。ただし、こちらもA6に「a-1」などと 入れないといけないのですね。 コードの種類は不規則でたくさんあるため、手作業で抜き出せる数 じゃないのです。まずはこのコードを抜き出す必要がありそうですね。 うーん、難しい。。 ありがとうございます。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

方法はいくつかありますが、簡単なのをひとつ。 A1~A55 に文字列 B1~B55 に数値 =SUMIF(A1:A55,"*(a-1)",B1:B55) それから、 F列に求める文字列(a-1)などが有り G列に数値計を求める場合、G列に以下の式 =SUMIF(A1:A55,"*"&F1,B1:B55) 外しましたらご容赦!(^^;;;  

bird72
質問者

お礼

お返事をいただきまして、ありがとうございます。 こちらの方法は、簡潔ですね。 ただし、a-1などのコードはとにかくたくさんあって、式の中に手で入れられる数ではありません。コードの文字数も一律ではなく、規則性もないのです。 まずはコードを抜き出す必要がありそうです。 コードの種類が少ない場合には、これが一番いいのかもしれません。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

変に記号を使ったりして、例を挙げるから判りにくい。 プログラムの景観があるからなのかな。 文字列の中でa-1の部分やa-2の部分は、どう判別するのか。質問者は人間で、見慣れているから疑問に思わなかったのだろうが、コンピュターには判断材料は教えてやら無いと何も手がかりがない。 a-1 a-2 ・・・ が質問者の入力などでシート上にある(作れる)なら、 ーー 例データ Sheet1のA1:B10 東京野菜 1 埼玉野菜 2 神奈川野菜 3 千葉野菜 4 東京乳製品 5 埼玉乳製品 6 神奈川乳製品 7 千葉乳製品 8 鹿児島野菜 1 岩手乳製品 2 --- どこでも良いが A11:A12に 野菜 乳製品 とあるとすると、 B11に =SUMPRODUCT((NOT(ISERROR(FIND(A11,$A$1:$A$10)))*($B$1:$B$10))) B12には =SUMPRODUCT((NOT(ISERROR(FIND(A12,$A$1:$A$10)))*($B$1:$B$10))) B11の式複写 結果 野菜 11 乳製品 28 >初歩的な質問かもしれませんが 結構関数としては上級の問題だと思う。 これを初歩的と見当つけるところは、関数の経験が少ない証拠、さらに勉強されたい。

bird72
質問者

お礼

丁寧に解説していただき、ありがとうございます。 質問がわかりづらかったですね。申し訳ないです。 コードの部分はたくさん種類があって、A11やA12のように簡単に抜き出せないのです。まずはコードを抜き出すというところに気付けばよかったですね(といっても、これがわからないのですが)。 こちらの方法は、コードの種類が限定されている場合にはすごく参考になると思います。式の意味はわかりませんが、すぐ使えますね。 ありがとうございます。