[[20220630134657]] 『2つの特定のワードを含むものに○としたい場合』(Excel初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『2つの特定のワードを含むものに○としたい場合』(Excel初心者)

A列に文章が行ごとにそれぞれ入っています。(二万件くらい)
B列に数式をいれたいです。
A列に「トマト」と「人参」の二つのワードが入っていればB列に○といれたいです。
まずはB1にどんな数式が入りますでしょうか。
if関数をどのように使用すれば良いかネットで調べましたがよくわかりませんでした。
何卒宜しくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 =IF(COUNTIFS(A1,"*トマト*",A1,"*人参*"),"○","")
 ではどうだろうか?
(ねむねむ) 2022/06/30(木) 14:00

ご回答ありがとうございました。無事に解決できました!

恐れ入りますが
例えばトマトか人参のどちらかひとつあれば△としたい場合は
どのような数式になるのでしょうか?

宜しくお願い致します。
(Excel初心者) 2022/06/30(木) 14:49


 両方あれば○、どちらか片方であれば△として。
 =CHOOSE(SUM(COUNTIF(A1,"*"&{"トマト","人参"}&"*"))+1,"","△","○")
 ではどうだろうか?
(ねむねむ) 2022/06/30(木) 15:03

申し訳ないです。
今回はどちらかのみの場合の数式をお願い致します。
別の欄に数式を作るものですから申し訳ないです。
※トマトか人参どちらかがあれば△

上記の数式は今後のためにメモさせて頂きます。
(Excel初心者) 2022/06/30(木) 15:07


 それでは
 IF(SUM(COUNTIF(A1,"*"&{"トマト","人参"}&"*"))=1,"△","")
 でどうだろうか?
 SUM(COUNTIF(A1,"*"&{"トマト","人参"}&"*"))
 は両方含まれていない場合は0、どちらか片方だけ含まれている場合は1、両方含まれている場合は2を返す。
(ねむねむ) 2022/06/30(木) 15:14

無事にできました!
私にとってはとても複雑な数式でとてもひとりではできませんでした。
感謝致します。

最後に例えばトマトと人参 もしくは じゃがいもだったら
☆というのはできますでしょうか。
五月雨で申し訳ないです。

トマト+人参    ☆
トマト+きゅうり
トマト+じゃがいも ☆

(Excel初心者) 2022/06/30(木) 15:29


 =IF(SUM(COUNTIF(A1,"*"&{"トマト","人参","じゃがいも"}&"*")*{1,2,2})=3,"☆","")
 ではどうだろうか?
 SUM(COUNTIF(A1,"*"&{"トマト","人参","じゃがいも"}&"*")*{1,2,2})
 はトマトだけで1、じゃがいもまたは人参だけで2、トマトとじゃがいもまたは人参の時には3、
 じゃがいもと人参の時には4、トマト、じゃがいも、人参すべての場合は5を返す。
(ねむねむ) 2022/06/30(木) 15:41

本当にありがとうございます。ぶじにできました。
これで3パターンの回答が一気に出せます。

恥ずかしながら今まではアホのようにフィルター検索で条件を入れて
それぞれのパターンで出していました。

本当に感謝致します。
これから表を完成させたいと思います。

(Excel初心者) 2022/06/30(木) 15:56


以前に質問させていただきました。
最近になり下記こちらで教えて頂いた数式を使用して
☆を出した場合とフィルターを使って手計算して☆をだしたときとで
結果に違いがあることがわかりました。

目視で確認をしても手計算の方が合っていました。
恐らく数式に問題があるのかなも思いました。
どなたかご教示お願いいたします。


A列に二万件ほど文章がずらずらとあります。
隣のセルにそれぞれ下記条件だったら☆を入れたいです。

条件:トマトと人参 もしくは トマトとじゃがいもだったら☆
それ以外は空欄

例:
トマト+人参    ☆
トマト+きゅうり
トマト+じゃがいも ☆
トマト+なす
人参+じゃがいも

以前に教えて頂いた数式↓
=IF(SUM(COUNTIF(A1,"*"&{"トマト","人参","じゃがいも"}&"*")*{1,2,2})=3,"☆","")
(初心者です。) 2022/07/26(火) 17:55


補足です。
A列にある文章には
トマトや人参等の野菜の名前の前後に文字が入っている場合があります。
宜しくお願い致します。
(初心者です。) 2022/07/26(火) 18:05

無理に1つの数式(セル)で考えず、作業セルを使ってみるのはどうでしょうか?

    __________A____________   __B__ ...  ___D__   __E__   ____F____
  1                                      トマト   人参    じゃがいも
  2 とめぇとぅ人参                          0       1         0
  3 がじゃいもトマト                        1       0         0
  4 にんじんとまと                          0       0         0
  5 トマト+人参                 ☆          1       1         0
  6 トマト+きゅうり                         1       0         0
  7 トマト+じゃがいも           ☆          1       0         1
  8 トマト+なす                             1       0         0
  9 人参+じゃがいも                         0       1         1
 10 人参†トマト†じゃがいも    ☆          1       1         1

 D2セル =COUNTIF($A2,"*"&D$1&"*")
 B2セル =IF(OR(SUM(D2:E2)=2,SUM(D2,F2)=2),"☆","")

(もこな2) 2022/07/26(火) 18:33


ご回答誠にありがとうございます。
できればセルを分けずに数式を入れたいのです。
というのも上記条件の他に20パターンぐらいB列からよこに
C列、D列というように条件を入れていくもので。。。
(初心者です。) 2022/07/26(火) 18:41

そうですか。御自身が納得される方法が一番ですから、無理には勧めません。
ただ、数式の内容くらいは理解されたほうがよいと思います。

(もこな2) 2022/07/26(火) 19:12


回答はできませんが
具体的にどのような時に違うのですか。
多いのですか、少ないのですか。
(aat) 2022/07/26(火) 19:18

手計算よりも数式を入れた方が☆の数がなぜか微妙にすくないのです。

(初心者です。) 2022/07/26(火) 19:37


横から失礼。
どこで差異が生じているかわかりませんか?
手計算ではジャガイモも該当すると判断しているとか?

少なくとも、現時点の数式は正しいような気がしますけどね。
ただ、その適用が手計算と異なっているのでしょう。
これは数式の問題というより、データの問題でしょう。

もこな2さんから指摘があったように、
作業領域を適宜利用して、簡単に検証ができるようにしておくことです。
・品物ごとに包含関係を表す列さえつくっておけば、
・あとは、ANDとORの組み合わせでいくらでも複雑なものを作る
ことはできるでしょう。
あなた自身が検証できないような数式にしておくのは、
却って効率を低下させることになるかもしれません。

(γ) 2022/07/26(火) 19:51


ご指摘ありがとうございます。
私自身、何もしてないわけでなく今日もずっと仕事しつつ
どこがおかしいのか考えて必死にネット等でもいろんな方法を探して
それでもわからずだったので最後の頼みとして相談した次第です。
ここにはパッと数式を教えてくれるかたがいるので頼ってみました。

もう少し考え方を変えて他の方法を探してみます。
ありがとうございました。

(初心者です。) 2022/07/26(火) 21:21


| 以前に教えて頂いた数式↓
| =IF(SUM(COUNTIF(A1,"*"&{"トマト","人参","じゃがいも"}&"*")*{1,2,2})=3,"☆","")
これは言うまでもないですが、
トマト,人参,じゃがいもの3つが揃ったときには""を返しますよ。

手作業ではこれも☆とカウントしているのではないですか?
だから足りない足りないという話になっているのでは?

(γ) 2022/07/26(火) 22:42


 >目視で確認をしても手計算の方が合っていました
 そこまで出来ていて
 >具体的にどのような時に違うのですか
 と問われても具体例は出さない。

 それでいて
 >どこがおかしいのか考えて必死にネット等でもいろんな方法を探して
 >それでもわからずだったので最後の頼みとして相談した次第です。

                                  ...なんか激しく迷子になっちゃってますね ^^;

 一旦離脱していかれたご様子ですが、
 拝見していても「あらあら...」って感じです。マトモに話が成立しそうには見えません。
 これはもう結末としては仕方ないかなと思います。

(白茶) 2022/07/27(水) 08:51


 確かに仕方ないかもしれませんが、一応こちらの考え方も示しておきますね。

 | 最近になり下記こちらで教えて頂いた数式を使用して
 | ☆を出した場合とフィルターを使って手計算して☆をだしたときとで
 | 結果に違いがあることがわかりました。
 そこまでできているなら、
 ・どんなフィルタを掛けたのかを示す。
 ・フィルタで対象となったものに、印をつける。(特定列に =☆ と入力して Ctrl+Enterで一括入力可)
 ・一方、数式によるものは一行ごとに判定ができているから、双方を比較する
   (ふたつの列が仮にX列Y列なら、Z列に =X1=Y1という式をいれておいて、Z列がFalseになっているものが原因データ。)

 こういう説明をして欲しかったですね。
 あなたがどんなデータを使っているのか、どんな検証の仕方をしているのかを
 説明しなければ、他人からは即答などできませんよ。
 場合によっては、差異があるという判断が間違っている可能性だってあります。

 | どこがおかしいのか考えて必死にネット等でもいろんな方法を探して
 | それでもわからずだったので最後の頼みとして相談した次第です。
 | ここにはパッと数式を教えてくれるかたがいるので頼ってみました。

 別に方法をネットで検索する必要は無くて、相手にするのはご自分のデータですよ。
 差異がわかれば、その理由もわかるでしょう。
 きっと数式の前提の理解が不十分なのだと想像します。
 きちんとした説明は端折っておいて、「パッと回答を貰える」というのは虫が良すぎます。

 折角、掲示板で良い回答を貰っても、地道に自分のデータに向き合うことをせずに、
 また別の回答を所望して一発逆転を狙う、
 何か、悪い循環に入っている感じですね。
(γ) 2022/07/27(水) 10:41

■1
>他の方法を探してみます。
まぁがんばってください。
他の回答者さんからもアドバイスがありますが、ちゃんと数式を理解しておかないと、今回のように望む結果がでないときに詰まってしまう(原因が自分でわからない)ということになると思うので"探す"のではなく、"なんでそうなったか"(数式で何をやっているのか)を調べるのが解決への近道のような気がします。

このため、「数式の内容くらいは理解されたほうがよい」と申し上げたのですが、ご自身の納得いく方法で対応できるのが一番ですから無理強いは致しません。

なお、原因を調べる過程で理解できない部分があれば、【具体的な例を挙げて】"質問"すると多数のアドバイスが得られると思います。

■2
さて、トピ主には刺さらなかったようですが、作業列を使う方法で別案を思いついたので発表しておきます。

 【考え方】
 (1)キーワードが文字列中にあれば、作業列に該当するキーワードをすべて書き出す
 (2)作業列に書き出した文字列を対象に、ワイルドカードを使って特定の組み合わせがあるかを調べる
 (3)(2)が1つでもあれば、Trueと判定して結果列に☆を表示する

 【レイアウト】
     ____________A____________    __B_    _________C__________
  1            文字列             結果           作業列
  2  トマト                               トマト
  3  とめぇとぅ人参                       人参
  4  がじゃいもトマト                     トマト
  5  にんじんとまと                         
  6  トマト+人参                   ☆     トマト人参
  7  トマト+きゅうり                      トマト
  8  トマト+じゃがいも             ☆     トマトじゃがいも
  9  トマト+なす                          トマト
 10  人参+じゃがいも                      人参じゃがいも
 11  人参†トマト†じゃがいも      ☆     トマト人参じゃがいも
 12  人参トマト                    ☆     トマト人参
 13  じゃがいも†トマト†人参      ☆     トマト人参じゃがいも

 C2セル
=IF(COUNTIF(A2,"*トマト*"),"トマト","")
&IF(COUNTIF(A2,"*人参*"),"人参","")
&IF(COUNTIF(A2,"*じゃがいも*"),"じゃがいも","")

 B2セル
=IF(SUM(COUNTIF(C2,{"*トマト*人参*","*トマト*じゃがいも*"})),"☆","")

要は、文字列内の順番がどうであれ作業列のほうに決まった順番に並んでくれれば、ワイルドカードを使って、組み合わせの有無が調べられるだろうという考え方です。

なお、下記のようにすれば作業列なしにすることも可能っぽいですが、2万行もデータがあるときにまともに動作するかは不明です。

 ※文字列を結合した結果にCOUNTIF関数が使えず、ワイルドカードを使いたいのでSEARCH関数を使用
 ※SEARCH関数で対象文字列がない場合にエラー値が返ってきてしまうのでIFERROR関数を使用

 B2セル
=IF(SUM(
IFERROR(SEARCH("トマト*人参",IF(COUNTIF(A2,"*トマト*"),"トマト","")&IF(COUNTIF(A2,"*人参*"),"人参","")&IF(COUNTIF(A2,"*じゃがいも*"),"じゃがいも","")),0),
IFERROR(SEARCH("トマト*じゃがいも",IF(COUNTIF(A2,"*トマト*"),"トマト","")&IF(COUNTIF(A2,"*人参*"),"人参","")&IF(COUNTIF(A2,"*じゃがいも*"),"じゃがいも","")),0))
,"☆","")

(もこな2) 2022/07/27(水) 17:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.