[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『商品名の特定の文字が一致したらカテゴリーIDを抽出』(ゴスマニ)
はじめまして、ゴスマニと申します。
Excelの関数で、特定の文字が含まれていたらリストの中にある情報を抽出する方法について質問をします。
ある通販サイトでカテゴリーをcsvで一括登録できる機能がございまして、そのカテゴリーリストを一部入力いたします。
インテリア・家具 481410
インテリア・家具 > 寝具・布団 481426
インテリア・家具 > 寝具・布団 > 布団セット 481451
インテリア・家具 > 寝具・布団 > マットレス 481452
インテリア・家具 > 寝具・布団 > その他(寝具) 481453
インテリア・家具 > ベッド 481425
インテリア・家具 > ベッド > シングル 481441
インテリア・家具 > ベッド > セミダブル 481442
インテリア・家具 > ベッド > ダブル 481443
インテリア・家具 > ベッド > ベッド(収納あり) 481444
インテリア・家具 > ベッド > ベッド(照明付き) 481445
インテリア・家具 > ベッド > ベッド(コンセント付き) 481446
インテリア・家具 > ベッド > 2段ベッド 481447
インテリア・家具 > ベッド > ロフトベッド 481448
インテリア・家具 > ベッド > すのこベッド 481449
インテリア・家具 > ベッド > セミシングル 487036
インテリア・家具 > オフィスチェア 481422
インテリア・家具 > オフィスチェア > キャスターつき 481436
インテリア・家具 > オフィスチェア > キャスターなし 481437
インテリア・家具 > オフィスチェア > 折りたたみ 481438
インテリア・家具 > カーテン・ブラインド 481420
インテリア・家具 > カーテン・ブラインド > カーテン 481429
インテリア・家具 > カーテン・ブラインド > ブラインド 481430
インテリア・家具 > カーテン・ブラインド > すだれ 481431
インテリア・家具 > カーテン・ブラインド > アコーディオンドア 481432
インテリア・家具 > デスク 481421
インテリア・家具 > デスク > デスク全般 481433
インテリア・家具 > デスク > パソコンデスク 481434
インテリア・家具 > デスク > デスク&チェアセット 481435
インテリア・家具 > ラック・本棚 481423
インテリア・家具 > ラック・本棚 > 本棚 481439
インテリア・家具 > ラック・本棚 > 多目的ラック 481440
インテリア・家具 > ラグ・カーペット 481419
インテリア・家具 > ラグ・カーペット > ラグ 481427
インテリア・家具 > ラグ・カーペット > カーペット 481428
インテリア・家具 > ドレッサー 481424
インテリア・家具 > シェルフ 482497
インテリア・家具 > 踏み台 485735
インテリア・家具 > キャビネット 486981
のようになっております。
スリム棚・多コンセント付き・収納ベッド【Reallt】リアルト【ポケットコイルマットレス:ハード付き】ダブル
という商品があり上記のリストと照らし合わせて、
特定のキーワードが一致したら指定のカテゴリ―IDを抽出する方法があれば教えていただけないでしょうか?
< 使用 Excel:Excel2013、使用 OS:Windows10 >
いちいち、探すのが面倒なので聞きたいのですが、例示の商品だと どのキーワードを拾って何番になればいいのですか? (コナミ) 2017/08/09(水) 07:29
例示の商品ですと、
コンセント付き、収納、ベッド、ダブルというキーワードを拾って、
インテリア・家具 > ベッド 481425
インテリア・家具 > ベッド > ダブル 481443
インテリア・家具 > ベッド > ベッド(収納あり) 481444
インテリア・家具 > ベッド > ベッド(コンセント付き) 481446
のようになると想定しております。
(ゴスマニ) 2017/08/09(水) 08:21
>コンセント付き、収納、ベッド、ダブルというキーワードを拾って、
それは、結果的に(実際に)拾えたキーワードですよね?
拾おうとしたキーワード(候補のキーワード?)は、それら以外に何があったのですか?
(半平太) 2017/08/09(水) 12:46
<追記>
照合する方向が、逆だったですか?
カテゴリーリストを「>」で分割して、それらの文字列が
「スリム棚・多コンセント付き・収納ベッド【Reallt】リアルト【ポケットコイルマットレス:ハード付き】ダブル」
と言う文字列内に存在するか調べて、IDを書き出すと言うイメージですか?
(12:59)
もうちょっと例示が欲しい感じですね。 ベッドで引っかけるなら、ベッドの商品全部になっちゃうし。
それより、マルチポストを何とかしてもらうのが先かな。 (コナミ) 2017/08/09(水) 12:51
さて、何故思ったような回答がもらえないのかというと、貴方の質問が漠然としすぎているからです。 キーワードは貴方が決めて、どこかにキーワードリストがあって…、というのが普通の考え方。 データがいっぱいあって、そこから勝手にキーワードを見つけてこい!、というのは、丸投げすぎます。
キーワード作りは手作業の方が向いていると思いますので、方法なぞ。まず、データには要所に「>」が付いていますよね。なので、全データをシートのA列に貼った後、「データ」−「区切り位置」機能を使い、区切り文字は「その他」を選択し「>」を指定すると、列分割されます。
スペースで型番らしきものがあったり無かったりするので、更に1列毎にスペース文字で区切っても良さそうですね。
こうやってデータをバラバラの列にした後、1行目にオートフィルタを設定してやるだけで、キーワードによる抽出表示シートが完成します。 貴方一人で十分実行できる作業内容かと思いますが、いかがでしょうか。
(???) 2017/08/09(水) 13:26
先ほどの例でいえば、ひろいたいキーワードは
インテリア・家具 > ベッド
インテリア・家具 > ベッド > ダブル
インテリア・家具 > ベッド > ベッド(収納あり)
インテリア・家具 > ベッド > ベッド(コンセント付き)
でございます。
そのカテゴリーに含まれるキーワードが商品名に含まれていたら、そのIDの抽出を試みたいと考えておりました。
同じベッドでも、サイズのみ含まれていたら、そのサイズが書かれたカテゴリーのIDが抽出できればと思います。
(ゴスマニ) 2017/08/09(水) 14:44
ここはマルチポストを許容していますが、「Q&Aサロン」の方は禁止しています。
どっちかをクローズしないと、回答が付きにくくなりますよ。
>同じベッドでも、サイズのみ含まれていたら、そのサイズが書かれたカテゴリーのIDが抽出できれば
その一言で、バーが2段ぐらい上がりましたね。
ゴスマニさんと同じ商品知識を持っている訳でもないですし、 どんなカテゴリー分けが実際にあるのかも分からないので、 私は取りあえずROMに回ります。
(半平太) 2017/08/09(水) 16:11
ここは、クローズ処理機能は無いので、
単に、「マルチポストしてしまい済みませんでした。こちらを閉じることに致します。」
とでも書いて頂ければ結構です。(上をコピペすれば簡単ですね ^^)
(半平太) 2017/08/09(水) 16:45
あら、向こうもこっちも閉じちゃうんだ。せっかくだからこちらで続ければいいのに。
でも、結局例示がもっと欲しいというリクエストにもお答えしてくれないみたいだし、 ご自身の中でやり方が固まってないみたいだからもう少し整理してから再投稿の方が いいのかも。 キーワードはカテゴリ区分から拾いたいんですよね?きっと。
例示は少なくとも5つくらいは欲しいですね。こういうパターンだと。 1つはつらい… (コナミ) 2017/08/09(水) 17:00
例示を少なくとも一つというのは、
同じタイプの商品だけでなく複数のパターンの商品名という認識であっておりますでしょうか?
(ゴスマニ) 2017/08/09(水) 19:08
>例示の商品ですと、 >コンセント付き、収納、ベッド、ダブルというキーワードを拾って、 >インテリア・家具 > ベッド 481425 >インテリア・家具 > ベッド > ダブル 481443 >インテリア・家具 > ベッド > ベッド(収納あり) 481444 >インテリア・家具 > ベッド > ベッド(コンセント付き) 481446
こんな感じでCSVから抽出できそうな
Sub test() Dim cn As Object, rs As Object, myDir As String, fn As String fn = Application.GetOpenFilename("CSVFiles,*.csv") If fn = "False" Then Exit Sub With CreateObject("Scripting.FileSystemObject") myDir = .GetParentFolderName(fn) fn = .GetFileName(fn) End With Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") With cn .Provider = "Microsoft.ACE.OLEDB.12.0" .Properties("Extended Properties") = "Text;FMT=DELIMITED;HDR=NO" End With cn.Open myDir cn.CursorLocation = 3 Set rs = cn.Execute("SELECT f1 FROM " & fn & " WHERE f1 like '%ベッド% ベッド%' or f1 like '%ベッド%コンセント付き%' " & _ "or f1 like '%ベッド%収納%' or f1 like '%ベッド% ダブル %'") Cells(1).CopyFromRecordset rs rs.Close: cn.Close Set cn = Nothing: Set rs = Nothing End Sub ( seiya) 2017/08/09(水) 19:27
ソースコードを作っていただいてありがとうございます。
皆様もありがとうございます。
マルチポストをしないために、一旦閉じさせていただきます。
(ゴスマニ) 2017/08/09(水) 21:23
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.