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

文字列を「ASCII文字」と「それ以外」に分けて、そのどちら一方を返すものです。
使用法は、
 = sieve(対象文字列 [, 区分(0/1)])
といった感じ。

もっときめ細かな区別をしたい場合には、パターン部分を入れ替えれば宜しいかと。

Function sieve(ByVal s As String, Optional ByRef n As Long = 0) As String
Dim reg As Object, p
 Set reg = CreateObject("VBScript.RegExp")
 reg.Global = True
 If n Then p = "[\x20-\x7F]+" Else p = "[^\x00-\x7F]+"
 reg.Pattern = p
 sieve = reg.Replace(s, "")
End Function

このマクロをシートに適用するにはどうすればよいですか また = sieve(対象文字列 [, 区分(0/1)])の式をセルに入力し具体的にどのような値をこの式に入れればよいのですか

質問者からの補足コメント

  • Function sieve(ByVal s As String …… をどうしたらイイのかも分からないです

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/10/24 13:17

A 回答 (3件)

ご質問者はユーザー定義関数の設定方法についてお尋ねになっているのだと思います。


ユーザー定義関数は以下の手順で設定します。
まず、ワークシート画面上で、「Alt」+「F11」キーを押します。VBE(Visual Basic Editor)が起動します。
次に、挿入、標準モジュール の順にクリックします。画面右側にモジュール ウィンドウが表示されます。
そのウィンドウにfujillinさんが作成されたユーザー定義関数の「正規表現」を若干手直しした(fujillinさん流用をお許しください)、以下のユーザー定義関数をコピペして貼り付けます。
Function sieve(ByVal s As String, Optional ByRef n As Long = 0) As String
Dim reg As Object, p
 Set reg = CreateObject("VBScript.RegExp")
 reg.Global = True
 If n Then p = "[A-ZA-Za-za-z]+" Else p = "[^A-ZA-Za-za-z]+"
 reg.Pattern = p
 sieve = reg.Replace(s, "")
End Function
貼り付け終えたら、「Alt」+「F11」キーを押します。通常のワークシート画面になります。
これでユーザー定義関数「sieve」が使えるようになりました。
例えばA2にアルファベットの混じった文章があったとして、B2に「=sieve(A2,0)」C2に「=sieve(A2,1)」を記述すれば、
B2にはアルファベットのみ、C2にはアルファベット以外の文字が表示されるはずです。
添付画像を参照してください。
なお、このブックを保存する際は「Excel マクロ有効ブック(*.xlsm)」として保存してください。
「このマクロの式のエクセルでの使い方がわか」の回答画像3
    • good
    • 1
この回答へのお礼

arigatougozaimasita

お礼日時:2020/11/07 18:54

(レストランにて)


 客 :「マスター、飛び切りおいしいものを作ってちょーだいっ‼」
マスター:「はい、どうぞ~。」
 客 :「こんなもん見たこともないんで、いらねえ。帰るっ。」
マスター:「 ・・・・・ ┐(´д`)┌ 」


(後日、別の店で)
 客 :「あれって、なんかおいしいかも、なんだけど、どうすりゃええの?」


    ・・・・・ ┐(´д`)┌
    • good
    • 0

https://oshiete.goo.ne.jp/qa/11970441.html
https://oshiete.goo.ne.jp/qa/11969437.html
> 質問の答えになっていません 回答するのをおやめください
> パターン部分の意味が頭が悪いのでよくわかりませんでしたが
> 式をセルに入力し、どのような値をこの式に入れればよいのですか


関数の使い方を知らないのなら、自分で関数を使い方を勉強するか、
とにかく、いろいろと、試行錯誤をしてみればどうですか。

Optional ByRef n As Long = 0
  ↓
[, 区分(0/1)]

F3に 次の文字列をいれて 
シートに適用するにはどうすればよいですか また = sieve(対象文字列

D5に 次の式をいれて
 = sieve( F3 )

それだけです。

Function sieve(ByVal s As String …… 
をどうしたらイイのかも分からないわけではないでしょう。
この回答への補足あり
    • good
    • 1

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