🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

678閲覧

特定のキーワード群を含むものにフラグをつけたい

kakizaking

総合スコア16

Google スプレッドシート

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2019/09/30 09:26

スプレッドシート・エクセル得意な方にご相談です!!

特定のキーワードを含むものに、フラグをつけたいのですが
数万件のキーワードがありCount系の関数で行うと計算がおもすぎて動きませんでした。

軽い処理で、下記を実現する方法をご存知でしたら、教えていただけないでしょうか?

▼対象キーワード(フラグをつけたいキーワード)
例)
ホームページ制作 大阪 →都道府県名、市区町村フラグ
ホームページ制作 名古屋 →市区町村フラグ



約5万KW

▼特定のキーワード
・都道府県名
・市区町村名

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

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

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

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

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

Zuishin

2019/09/30 09:37

少なくとも 5 行あるサンプル入力データと処理後の出力データを作って掲載してください。 また、スナック竜宮城は宮城が含まれているから都道府県名フラグが立ちますか? それと全国の市区町村のデータはあるのですか?
Zuishin

2019/09/30 13:15

市区町村は非常に大きなデータ(12 万件以上)になるので、どのみち時間はかかると思います。もしかしたら、VBA で取り扱うよりも CSV を C# などで扱う方が速くなるかもしれませんが、VBA でなければいけませんか?
Zuishin

2019/09/30 13:32

間違えました。2000 件弱でしたね。試しにやってみます。
papinianus

2019/10/01 01:06

A列が5万あるのですよね?あとB列はカウンタではなくフラグでよいのですか?
guest

回答1

0

ベストアンサー

Google Spread Sheet では時間制限があるので Excel です。
このマクロを動かす前に範囲名を三つつけてください。
社名が書いてある範囲(この例では A2 から A10)に「社名」
都道府県が書いてある範囲(この例では D2 から D104)に「都道府県」
市区町村が書いてある範囲に「市区町村」
そしてマクロを動かすと、社名の右二つのセルにそれぞれフラグが入ります。

VBA

1Function PlaceNameExists(value, placeNames) As Boolean 2 For Each placeName In placeNames 3 If InStr(value, placeName) Then 4 PlaceNameExists = True 5 Exit Function 6 End If 7 Next 8End Function 9 10Sub Macro1() 11 prefectures = WorksheetFunction.Transpose(ActiveSheet.Range("都道府県")) 12 Cities = WorksheetFunction.Transpose(ActiveSheet.Range("市区町村")) 13 For Each c In ActiveSheet.Range("社名").Cells 14 If PlaceNameExists(c.value, prefectures) Then 15 Cells(c.Row, c.Column + 1).value = 1 16 End If 17 If PlaceNameExists(c.value, Cities) Then 18 Cells(c.Row, c.Column + 2).value = 1 19 End If 20 Next 21End Sub 22 23

投稿2019/09/30 14:37

Zuishin

総合スコア28669

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

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

Zuishin

2019/09/30 14:39

市区町村 1896 件埋めて実行しましたが、一瞬で終了しました。社名が増えても実用的な速度で動くと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問