アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば、
【nike-outlet国内正規品】abc1234 001 44サイズ T-shirt スプリング SV-1A cotton cloth コットン 生地
という文字列の場合、

「abc1234 001 44 SV-1A」を抽出したいです。

ネットで検索したところ、以下のような回答を見つけましたが、
最後の「=myf(A1)のように計算する。」の操作方法が分かりません。

=myf(A1)の操作方法、または新しい方法(マクロ)でも構いませんのでご教授願います。

---------------------------
手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

public function myf(a) as string
 dim i as long
 for i = 1 to len(a)
 if mid(a,i,1) like "[0-9a-zA-Z ]" then
  myf = myf & mid(a,i,1)
 end if
 next i
end function

ファイルメニューから終了してエクセルに戻る

任意のセルに元の言葉を記入し、
=myf(A1)
のように計算する。
-------------------------------------

A 回答 (2件)

>=myf(A1)のように計算する。

」の操作方法が分かりません。
単に、組み込み関数で例えば

=Len(A1)

とすると同じように、ユーザー定義関数も扱います。
=myf(A1)

ただし、そのユーザー定義関数ではうまくだせないだろうと思います。

かと言って、以下でもうまくいくとは限りません。
このピックアップの仕方は、区切れになる部分にすべてスペースを入れ、
その隙間で、Split関数で配列で、文字列と記号に分解し、数字が入っている単語・記号と、数字サイズが入ってたら、数字だけを取るように出来ています。

しかし、一つの例だけで、全体を処理できるのを作るのはマレだと思います。
もっと多くの例からみないと正確なものは作れません。

'// 標準モジュール
Function PickupWords(ByVal enter_text As Variant)
Dim arr
Dim buf As String, obuf As String
Dim i As Long
buf = Replace(enter_text, "】", "】" & Space(1))
buf = Replace(buf, Space(1), Space(1), , , vbTextCompare)
arr = Split(buf, Space(1))
For i = 0 To UBound(arr)
  If arr(i) Like "*[0-90-9]*[ァ-ヶ]*" Then '数字とカタカナ
  obuf = obuf & " " & Val(arr(i))
  ElseIf arr(i) Like "*[0-9]*" Then
  obuf = obuf & " " & arr(i)
  End If
Next i
PickupWords = Mid(obuf, 2)
End Function
    • good
    • 0

ご提示の例では、myf()というユーザー関数を作り、それをどのシートでも使えるようにしています。


なので、セルA1に以下の文字を入力
【nike-outlet国内正規品】abc1234 001 44サイズ T-shirt スプリング SV-1A cotton cloth コットン 生地

適当なセル(例えばB1)に=myf(A1)とすれば、B1セルに抽出した結果が表示されます
    • good
    • 0

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