このQ&Aは役に立ちましたか?
1セル内の複数キーワード集計の方法とは?
2023/10/12 14:18
- 1セルに複数のキーワードをカンマで区切って入力し、各キーワードに対応する項目に★を表示する方法について知りたいです。
- 現在は1セルに1つのキーワードしか集計できず、同一セル内の複数のキーワードを集計する方法を教えてください。
- ひかりTVのサービスやISPぷららについての質問です。
1セル内の複数キーワード集計
2015/10/24 10:42
1つのセルに好きな季節を記入してあります
行に集計項目があります。A1:春 B1:夏 C1:秋 D1:冬
E列に好きな季節をカンマで区切って入れます。
E2:【春】、E3:【秋、春】、E4:【春、初夏】です。
E2:【春】でA2で★表示
E3:【秋、夏】でB3とC3で★表示
E4:【春、初夏】でA4で★表示
としたいです。好きな季節が、1セルに1個だと可能なのです。春=IF($A$1=E2,"★"," ")、夏=IF($B$1=E2,"★"," ")、秋=IF($C$1=E2,"★"," ")、冬=IF($D$1=E2,"★"," ")の関数設定です。1セルに2個以上だとE3で秋、夏に★、E4で春に★は集計できません。これを集計できる方法を教えて下さい
※OKWaveより補足:「ひかりTVのサービスやISPぷらら」についての質問です。
質問者が選んだベストアンサー
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
その他の回答 (3件中 1~3件目)
#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列が優先するのか、質問者の意図と違うかも。
この質問以は、補足が必要なのではないか。
下記の私の処理例を読んで、私の考え違い・間違いなど補足すべきだろう。
余り具体的にデータ例を提示しているために、質問していることの全貌をつかみにくい。
具体例だけ提示すればわかりやすいと思うのは間違いだと思う。
質問では、説明文章を適当に添えて、説明が必要なことを覚えておいて。
ーー
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関数で、存非をチェックできるかもしれない。
===
「集計」という言葉が出てくるが何のこと。
集計は数字セルを足すのじゃないの。それはどこ?
お礼
2015/10/24 12:56
早速の回答ありがとうございます。
関数を実行したら100%近く納得のいく結果でした。
【初】【晩】の入っている分は、修正して使用開始しました。