[[20240414170223]] 『文字の抽出』(たみお) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『文字の抽出』(たみお)

Excelについての質問です。

 ○○ ○○○ ○○ ジャケット S メンズ ○○ 
○○○○ ○○ シャツ 1 キッズ ○○ ○○○○ 
○○ ○○○ ○○ ワンピース XL レディース ○○ ○○○○
 ○○ ○○○ タンクトップ M メンズ ○○○○

 上記のようにランダムな複数の語句が含まれる商品名からある特定の語句を抽出したいと思っております。※例でいうとジャケット、シャツなどの服の種類
 条件として商品名の語句の数はランダム、決まって使われる語句はメンズ、レディース、キッズ、ユニセックスの性別のみ、服の種類と性別の位置関係は商品名に限らず決まっている(服の種類の後ろ2語句目に性別が来る)
 語句間は半角スペースで区切られている

 以上の条件の時に使える関数などあれば教えてください。

< 使用 Excel:unknown、使用 OS:unknown >


 性別の2語句前の単語を抽出したいということでしょうか。
 数式での回答を希望するなら、
 Excelのバージョンの記載は必須です。
 以下、完成想像図

    |[A]                                                    |[B]         
 [1]| ○○ ○○○ ○○ ジャケット S メンズ ○○             |ジャケット  
 [2]|○○○○ ○○ シャツ 1 キッズ ○○ ○○○○            |シャツ      
 [3]|○○ ○○○ ○○ ワンピース XL レディース ○○ ○○○○|ワンピース  
 [4]| ○○ ○○○ タンクトップ M メンズ ○○○○            |タンクトップ

 仮にMicrosoft365だとしても、私には数式での解答は無理なので、
 もしVBAでやるならこんな感じで。

    Sub test()
        Dim tmp, v
        Dim r As Long, i As Long, j As Long
        r = Cells(Rows.Count, "A").End(xlUp).Row
        For i = 1 To r
            tmp = Split(Trim(Cells(i, "A")), " ")
            For Each v In Array("メンズ", "レディース", "キッズ", "ユニセックス")
                For j = 0 To UBound(tmp)
                    If tmp(j) = v Then Cells(i, 2) = tmp(j - 2)
                Next
            Next
        Next
    End Sub
(ニック) 2024/04/14(日) 17:47:42

ありがとうございます!
情報の不備申し訳ございません。
商品名がエクセルのF列にあり抽出結果をE列に反映させたいのですが可能でしょうか?
(たみお) 2024/04/14(日) 18:24:36

 ↑
 VBAでいいんですか?

 以下、変更点
 "A" → "F"
 Cells(i, 2) → Cells(i, "E")

 繰り返しになりますが、
 数式での回答を希望するなら、
 Excelのバージョンの記載は必須です。
(ニック) 2024/04/14(日) 21:10:58

たびたび不備申し訳ございません。
理想の結果出ました。
ありがとうございました。
(たみお) 2024/04/14(日) 21:34:44

コメント返信:

[ 一覧(最新更新順) ]


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