回答編集履歴

2

質問文の新たな補足への回答追記

2024/08/23 17:49

投稿

pecmm
pecmm

スコア647

test CHANGED
@@ -99,7 +99,7 @@
99
99
 
100
100
  もしくはSQLでいう`in句`の代用として`matches`演算子が使えるので
101
101
 
102
- ```gsa:before
102
+ ```gas:before
103
103
  "select * where "
104
104
  & "Col3= '"& '文字列指定シート'!A2 &"'"
105
105
  &" or "&"Col3= '"& '文字列指定シート'!A3 &"'"
@@ -108,10 +108,49 @@
108
108
  &" or "&"Col3= '"& '文字列指定シート'!A6 &"'"
109
109
  ```
110
110
 
111
- ```gsa:after
111
+ ```gas:after
112
112
  "select * where "
113
113
  & "Col3 matches '"& join("|",'文字列指定シート'!A2:A6) &"'"
114
114
  ```
115
115
 
116
116
  多分こんな感じで一部まとめることができます
117
117
 
118
+
119
+
120
+ # 補足について 2024/08/24 02:45 追記
121
+
122
+ #### クエリ文字列のみを表示させた結果について
123
+
124
+ クエリの末尾が "or" で終わっていて、文法的に不正なクエリに見えるのですが大丈夫なのでしょうか…?
125
+
126
+
127
+ #### 実際のデータ&クエリの修正について
128
+
129
+ 本来やりたい内容としては、以下でよいでしょうか?
130
+ 1. 以下のいずれかを満たした列を抽出する
131
+ 1. Col3(C列)のテキストが、該当キーワードのいずれかを含む
132
+ 1. Col4(D列)のテキストが、該当キーワードのいずれかを含む
133
+ 1. Col5(E列)のテキストが、該当キーワードのいずれかを含む
134
+
135
+ https://developers.google.com/chart/interactive/docs/querylanguage?sjid=15617819590153891286-AP&hl=ja#where
136
+
137
+ 上記の公式ドキュメントの通り、演算子`=`は完全一致の検出用なので
138
+ 部分一致を検出したいのであれば全て`contains`演算子にそのまま置き換えるのが手っ取り早いでしょう。
139
+
140
+ (もし複雑な条件であれば `like` や `matches` が役に立ちますが、クエリがやや複雑になります)
141
+
142
+
143
+ #### 現状の不可解な点
144
+
145
+ 現時点でC列のみ部分一致で抽出できているのであれば、実際はこういう条件のクエリが書かれているはずです。
146
+ 1. 以下のいずれかを満たした列を抽出する
147
+ 1. Col3(C列)のテキストが、該当キーワードのいずれかを含む
148
+ 1. Col4(D列)のテキストが、該当キーワードのいずれかと完全一致する (またはCol4の条件が記述されていない)
149
+ 1. Col5(E列)のテキストが、該当キーワードのいずれかを完全一致する (同上)
150
+
151
+ ですが、質問で挙げられているクエリでは全て`=`になっています。
152
+ 本当にそのクエリ&そのデータであれば、C列に完全一致する行が見当たらないので一行も抽出されないはずなのですが……。
153
+
154
+ というわけで、クエリを前述の`contains`とかに書き直して上手くいけばまあそれはそれで問題なしかもしれませんが
155
+ 思った通りに行かない場合は、この不可解な現象についても解決しなければいけない可能性がなくもないです。
156
+

1

見出しの文言をより適切なものに差し替えた

2024/08/22 22:42

投稿

pecmm
pecmm

スコア647

test CHANGED
@@ -1,6 +1,6 @@
1
1
  現状正確な回答は難しそうなので色々見直す方法を書いておきます
2
2
 
3
- ## 具体例
3
+ ## 実際のデータ
4
4
 
5
5
  > ▼③エラーは出ないがすべて探し出せていない
6
6