質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

497閲覧

【googlesheets】A列とB列で部分一致しているものの抽出または判別をしたいです。

Por

総合スコア40

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/06/24 06:08

編集2021/06/24 08:42

#達成したいこと
A列とB列で部分一致しているデータを抽出または判別したい。

#試したこと
=ARRAYFOMULA(IF(COUNTIF(A:A,B:B)>=1,"O","X"))

完全一致の場合はこの式で判別ができたのですが、
列によってスペースが入ったり、表記が若干違う場合、
どのようにしたら判別できるでしょうか。
※例)A列:NightVision B列:NightVision EA 6.3 MT4

ここでは文字数を指定して3文字以上の文字列が一致しているとき、「一致している」としたいです。
例えば、NightVisionの場合、「Nig」も「ght」も〇。

写真のように一覧で表示できるようにしたいです。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sawa

2021/06/24 07:20

"Google スプレッドシート" のタグが適しているかと思います。 あと部分一致というアバウトな表現では無理です。 NightVision と NightEye もNigthで部分一致ですし、 NightVision と Negotiation だって 冒頭のNとか最後の ionが部分一致ですから。
Por

2021/06/24 08:45

アドバイスありがとうございます。 Google スプレッドシートのタグを追加しました。 部分一致については3文字以上が同じ場合、一致しているとして判別出来るようにしたいと思っています。 もしよろしければ、ご教示いただきたく思います。
guest

回答1

0

ベストアンサー

結局シート関数で出来ることは総当たり処理になってくるんで、式つくれても動きが重くて行数や文字数によっては使い物にならなかったりします。あと3文字の一致はたぶん誤検知も多いと思いますよ。

それを踏まえた上で3文字部分一致の考え方と式ですが

=ARRAYFOMULA(IF(COUNTIF(A:A,B:B)>=1,"O","X"))

↑ 完全一致の式がA列を範囲、B列を条件としている = A列に重複する物がある B列の横に 〇 なので、
これに倣って考えると、

B列内のセルの文字列の連続する3文字を先頭から順番にチェックしていき、
そのどれかがA列のいずれかのセルの文字列に含まれる場合 B列の横に〇をつける

という結果を返す式を作ることになります。

登場する関数が多いので、ここからの細かい解説を飛ばしますが、
最終的に以下で出来ると思います。

GoogleSheet

1=ARRAYFORMULA(IF(B:B="",,IF(IF(LEN(B:B)<3,COUNTIF(A:A,"*"&B:B&"*"),MMULT(IF(LEN(MID(B:B,SEQUENCE(1,MAX(LEN(B:B))-2),3))<3,0,COUNTIF(A:A,"*"&MID(B:B,SEQUENCE(1,MAX(LEN(B:B))-2),3)&"*")),SEQUENCE(MAX(LEN(B:B))-2,1,1,0)))>0,"O","X")))

投稿2021/06/25 00:29

sawa

総合スコア3002

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Por

2021/06/26 00:33

教えていただきありがとうございました。 読み解くのにはもう少し時間がかかりそうですが、一旦やりたかったことは達成しました。 初めて使う関数も登場して大変勉強になっています。 また、下記のように3のところをC1で代用し、C1に数字を入れることで一致する文字数を変更しながら使おうと思ったのですが、使い方として合っていますでしょうか。 ‘‘‘=ARRAYFORMULA(IF(B:B="",,IF(IF(LEN(B:B)<C1,COUNTIF(A:A,"*"&B:B&"*"),MMULT(IF(LEN(MID(B:B,SEQUENCE(1,MAX(LEN(B:B))-(C1-1)),C1))<C1,0,COUNTIF(A:A,"*"&MID(B:B,SEQUENCE(1,MAX(LEN(B:B))-(C1-1)),C1)&"*")),SEQUENCE(MAX(LEN(B:B))-(C1-1),1,1,0)))>0,"O","X")))‘‘‘
sawa

2021/06/26 12:04

その理解でOKです。3文字一致を調整するなら、セル参照にすると良さそうですね。
Por

2021/06/28 11:27

ありがとうございます.いつもご回答いただきありがとうございます. 引き続きよろしくお願いいたします.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問