プロが教えるわが家の防犯対策術!

A列に、以下のようなデータが入っています。

「40φ×20L/min×4m×0.25kw」
「30cc/min×0.015kw,※※製,PVC」
「※※型,30kg-m,0.5kw」


「○kw」の部分だけを別セルに移したいのですが、
位置や抽出文字数がバラバラな為、
FIND関数やMID関数を使おうにも
どうすれば良いのか分かりません。
「○kw」の前は、ほぼ「×」か「,」になるかと思われます。
何か良い方法があればアドバイスをお願い致します。

A 回答 (3件)

対象のA列を指定し、


データタブにある「区切り位置」をクリック
カンマやタブの区切り文字によって区切られたデータを指定し次へ
「カンマ」および「その他」にチェックを入れ、その他の右に「×」を入力し次へ
完了ボタン押下で「○kw」だけのセルになるように抜き出し出来ます。

これだけだと行によってD列だったり、B列だったりするので、それでもよければですが^^;
    • good
    • 0
この回答へのお礼

「区切り位置」は私も考えたのですが、
仰るとおり列が一定でなくなってしまう為、
なかなか難しく…。
御回答、ありがとうございました。

お礼日時:2017/02/10 11:22

そうですねぇ…見た限り小数点の入ったものはkwの部分のみであり、kwは10未満の数字のみであるので、


小数点の位置の1つ手前からkwまでで抽出するのではどうでしょうか?
    • good
    • 0
この回答へのお礼

確かに、大体のデータが例に挙げたものと
同じようなものなので、その方法なら
ほぼ抽出出来そうですね。
ただ、様々なパターンがあるので
網羅することは厳しそうです。
御回答、ありがとうございました。

お礼日時:2017/02/10 12:06

こんにちは。



あえてマクロにしたのは、Excelという条件下だからですが、こういう時は、正規表現検索・置換によって可能ですので、正規表現付きエディターで抜き出すことも可能です。
また、以下は、単独で、=RegPickup(A1) としても可能です。

'//標準モジュール
Sub TestMacro()
Dim ret As Variant
Dim c As Variant
For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))
 If c.Value <> "" Then
  c.Offset(, 1).Value = RegPickup(c.Value)
 End If
Next c
End Sub

Function RegPickup(ByVal sText As Variant)
Const PTRN As String = "(0?[\d\.]+kw)" '正規表現パターン

Dim RegEx As Object
Dim Ms, m
Dim buf As String
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
  .Global = True: .IgnoreCase = False: .MultiLine = True
  .Pattern = PTRN
Set Ms = .Execute(sText)
For Each m In Ms
 buf = buf & " " & m.Value
Next
End With
RegPickup = Trim(buf)
buf = ""
End Function
    • good
    • 0
この回答へのお礼

出来ました!
「正規表現」というものがある事を初めて知り、
大変勉強になりました。
コードは私には難しく、よく分かりませんが
大変助かりました。ありがとうございました。

お礼日時:2017/02/10 12:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!