- ベストアンサー
1セル内の複数キーワード集計の方法とは?
- 1セルに複数のキーワードをカンマで区切って入力し、各キーワードに対応する項目に★を表示する方法について知りたいです。
- 現在は1セルに1つのキーワードしか集計できず、同一セル内の複数のキーワードを集計する方法を教えてください。
- ひかりTVのサービスやISPぷららについての質問です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
【春、初夏】に夏が無いことを人間が区別できませんので、難しいです。 【春、初夏】も夏があるもの考えれば、A2セルに以下の式を入れ、 =IF(AND(ISERR(FIND(A$1,$E2)),ISERR(FIND(A$1,$E2))),"","★") その後、右と下にドラッグコピーでいかがでしょう。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。関数を中心に考えた。ただカンマ区切りのデータをセルに分割するのは、よく知られた下記「操作」(データー区切り位置)で賄った。 ーー データ A4:F7 変なところから始まっていますがすみません、意味はありません。 A5:F7は下記の関数を入れた後の結果です acd df c tu x v ★ ー ★ ー ★ ー ★ ★ ー ー ー ー ー ★ 5-7行は関数の結果です。関数は後述。 ーー H5:H7に元データがあり、I列より右列に、M7までカンマで区切ったデータを分離した。 acd,b,c acd b c accd,df,tu,x accd df tu x vb,v,gh,hjk,x vb v gh hjk x <-H列からM列までの分離後の列データ すなわち、I列からM列は、データー区切り位置ーカンマで各セルに分離しました。 ーー 関数 A5セルに =IF(NOT(ISERROR(MATCH(A$4,$I5:$L5,0))),"★","") と入れて、A5セルを第7行目まで、かつA5:A7のセルをF列まで式を複写します。 結果は上記の通りです。 だい4行を優先するのか、I列ーM列が優先するのか、質問者の意図と違うかも。
- imogasi
- ベストアンサー率27% (4737/17069)
この質問以は、補足が必要なのではないか。 下記の私の処理例を読んで、私の考え違い・間違いなど補足すべきだろう。 余り具体的にデータ例を提示しているために、質問していることの全貌をつかみにくい。 具体例だけ提示すればわかりやすいと思うのは間違いだと思う。 質問では、説明文章を適当に添えて、説明が必要なことを覚えておいて。 ーー A1:E4について 春 夏 秋 冬 * ー ー ー 春 ー * * ー 秋、春 * ー ー ー 春、初夏 までは読み取れるが(星印は*に空白セルはーで表示) A1:D1はデータ列のようだが、下の第2行から第4行間で、該当する結果を入れるセルだとすると、第1行に当たる、他のデータはどこに現れるのか。E列より右列に現れるのか。 またA5からE10などに、データと検索結果を出すセルが現れるのか?。 普通はこんな構成は少ないだろう(エクセルの使い方が経験不足とおもう) ーー E列は条件を示す列のようで、カンマで条件語句(文字列)をOR条件で示しているようだな。たとえば、春、初夏は、春か初夏の語句が含まれているセルなら、★マークを出すらしい。 また第1行のデータにない条件語句もE列に出現するらしい。 ーー 多数データを列方向に展開するのは、エクセルの使い方として経験不足だと思う。 == 1セルにカンマで区切って条件語句を並べるのは、エクセル関数では区分け(Split)処理がむつかしい(関数では複数データとなる配列等に振り分けるのがむつかしく)ので、むつかしいと思う。関数で回答が出ても質問者にはすぐ理解できない式だろう。 こういう場合はVBAの出番かとおもう。 質問者は、VBAは使ったことがないだろうが、挙げてみておく。 標準モジュールに Sub test01() dr = Range("E100000").End(xlUp).Row 'E列の最下行をプログラムで掴む 'MsgBox dr For i = 2 To dr '第2行目からdr行まで繰り返し For j = 1 To 4 'A列からD列まで繰り返し dt = Cells(1, j) '第1行J列 既定分類 g = Split(Cells(i, "E"), ",") '第i行目のE列データ=条件語句、をカンマで分離 g(k)に入れる For k = 0 To UBound(g) '分離した語句それぞれについて MsgBox g(k) f = InStr(dt, g(k)) '分離した語句が第1行目に見つかれば If f <> 0 Then Cells(i, j) = "★" End If Next k Next j Next i End Sub 結果 A1:E6 春 夏 秋 冬 条件? ★ ー - ー 春 ★ ー ★ ー 秋,春 ★ ー ー ー 春,初夏 ー ★ ー ★ 夏,冬 ー ー ー ★ 厳冬,冬 ーーー 関数で、もし現状E列データを、カンマで分離し、分離したものを複数セルにF列より右列に振り分ければ、Match関数で、存非をチェックできるかもしれない。 === 「集計」という言葉が出てくるが何のこと。 集計は数字セルを足すのじゃないの。それはどこ?
お礼
早速の回答ありがとうございます。 関数を実行したら100%近く納得のいく結果でした。 【初】【晩】の入っている分は、修正して使用開始しました。