No.2ベストアンサー
- 回答日時:
とりあえず、カタカナを()で挟むマクロを作ってみました。
閉じ括弧は文字列の最後につけるようになっています。Sub Main()
Dim MyRange As Range
Dim ChikanRange As Range
Set ChikanRange = Application.InputBox(prompt:="セルを選択してください。", _
Type:=8)
If ChikanRange Is Nothing Then Exit Sub
For Each MyRange In ChikanRange
Call KakkoHuka(MyRange)
Next
End Sub
Sub KakkoHuka(MyRange As Range)
'**************************************************
' 指定セルのカタカナを()で括る
'**************************************************
Dim MyLen As Integer
Dim i As Integer
Dim MyStr As String
MyLen = Len(MyRange.Value)
For i = 1 To MyLen
MyStr = Mid(MyRange.Value, i, 1)
If (MyStr >= "ア" And MyStr <= "ン") Or _
(MyStr >= "ア" And MyStr <= "ン") Then
MyStr = Left(MyRange.Value, i - 1) & _
"(" & Right(MyRange.Value, MyLen - i + 1) & ")"
MyRange.Value = MyStr
Exit For
End If
Next
End Sub
ご回答有難うございました。
置換え出来ました!助かりました。感謝します。
解決しましたが、漢字と数字も出来れば知りたいので、もうしばらく開けておきます。
No.6
- 回答日時:
#5 の訂正です。
漢字の検索について
私の書いたものは、JIS漢字のフルサポートをしていません。
"[一-钁]+")
JISの第二水準の途中までになっています。実務的には問題はないかもしれませんが、JIS文字の最後までに訂正します。
訂正後
"[一-龝]+")
もし、Unicode 文字フルサポートするのでしたら、
"[\u4E00-\u9FA5\uF900-\uFA2D]+"
このようになります。
なお、Excelのワークシート上では、標準では、Unicode文字は使いません。
No.5
- 回答日時:
こんばんは。
#1 で書いた、Wen02 です。VBAはOKなんですか?
範囲を最初にマウスで選択しておいてから、マクロ「かっこを入れる」を実行してください。
このマクロは、カタカナ(全・半)、漢字、数字(全・半)、アルファベット(半)をカッコで括ることが出来ます。
上書き処理でよければ、
# '右隣に出力
# c.Offset(, 1).Value = rePickup(c, Ret)
の部分を、
'右隣に出力
c.Value = rePickup(c, Ret)
のように換えてください。
なお、単独の関数で用いるときは、一般の関数と同じで、
=repickup(A1)
[デフォルトで、カタカナを括ります]
とします。
'<標準モジュールを推奨,他モジュールでも可>
'--------------------------------------------
Sub カッコ入れる()
Dim Rng As Range, ans As Integer
Dim c As Range, Ret As Variant
Set Rng = Selection '範囲をマウスで選択
'範囲はよい?
If Rng.Count = 1 Then
ans = MsgBox("マウスで処理範囲を選択してください。" & Chr(13) _
& "現在のセルに処理を続行しますか?", vbYesNo)
If ans = vbNo Then
Exit Sub
End If
End If
'対象は何?
Ret = Application.InputBox("何を区分けしますか?" & Chr(13) & _
"カタカナ=0, 数字=1, Alphabet=2, 全角数字=3, 漢字=4", Type:=2)
If VarType(Ret) = vbBoolean Or Ret = "" Then
Exit Sub
Else
Ret = CInt(Ret)
End If
For Each c In Rng
If VarType(c) = vbString Then
'右隣に出力
c.Offset(, 1).Value = rePickup(c, Ret)
End If
Next
End Sub
Private Function rePickup(ByVal myStr As String, _
Optional myPat As Variant = 0) As String
'rePickup(文字, [スイッチ]=0:カタカナ, 数字:1,2:アルファベット,3:全角数字,4:漢字
Dim Re As Object, myArg As Variant, Matches As Object, Match As Object
Dim Buf As String, Hankana As String
Const LBr As String = "("
Const RBr As String = ")"
'Web上では半角カタカナが書けない
Hankana = Chr(166) & "-" & Chr(223)
Set Re = CreateObject("VBScript.RegExp")
With Re
'正規表現パターン
myArg = Array("[ァ-ヶ" & Hankana & "]+", "[0-90-9]+", "[A-z]+", "[0-9]+", "[一-钁]+")
.Pattern = "(" & myArg(myPat) & ")"
.Global = True
Set Matches = .Execute(myStr)
If Matches.Count > 0 Then
Buf = myStr
Buf = .Replace(Buf, LBr & "$1" & RBr)
End If
rePickup = Buf
End With
Set Re = Nothing
End Function
'--------------------------------------------
No.4
- 回答日時:
それぞれのサブルーチンだけですが、以下に示します。
Main()の呼び出し先を書き換えてください。(もっとスマートなものに書き換えてください)
1)カタカナ:誤りがありました。[ヴ]や[ヲ](半角)などの判定が漏れていました。また、コーディング中の半角カナが全角に置き換えられていました。半角カナに書き換えてください。
2)漢字については一応コード表を見たのですが、カタカナと同じ間違いがあるかも知れません。
Sub KakkoHuka(MyRange As Range)
'**************************************************
' 指定セルのカタカナを()で括る
'**************************************************
Dim MyLen As Integer
Dim i As Integer
Dim MyStr As String
MyLen = Len(MyRange.Value)
For i = 1 To MyLen
MyStr = Mid(MyRange.Value, i, 1)
If (MyStr >= "ア" And MyStr <= "ヶ") Or _
(MyStr >= "ヲ" And MyStr <= "ン") Then
'****** ヲとンを半角に書き換えてください。
MyStr = Left(MyRange.Value, i - 1) & _
"(" & Right(MyRange.Value, MyLen - i + 1) & ")"
MyRange.Value = MyStr
Exit For
End If
Next
End Sub
Sub KakkoHuka_Suuji(MyRange As Range)
'**************************************************
' 指定セルの数字を()で括る
'**************************************************
Dim MyLen As Integer
Dim i As Integer
Dim MyStr As String
MyLen = Len(MyRange.Value)
For i = 1 To MyLen
MyStr = Mid(MyRange.Value, i, 1)
If (MyStr >= "0" And MyStr <= "9") Or _
(MyStr >= "0" And MyStr <= "9") Then
MyStr = Left(MyRange.Value, i - 1) & _
"(" & Right(MyRange.Value, MyLen - i + 1) & ")"
MyRange.Value = MyStr
Exit For
End If
Next
End Sub
Sub KakkoHuka_Kanji(MyRange As Range)
'**************************************************
' 指定セルの漢字を()で括る
'**************************************************
Dim MyLen As Integer
Dim i As Integer
Dim MyStr As String
MyLen = Len(MyRange.Value)
For i = 1 To MyLen
MyStr = Mid(MyRange.Value, i, 1)
If (MyStr >= "亜" And MyStr <= "腕") Or _
(MyStr >= "弌" And MyStr <= "瑤") Then
MyStr = Left(MyRange.Value, i - 1) & _
"(" & Right(MyRange.Value, MyLen - i + 1) & ")"
MyRange.Value = MyStr
Exit For
End If
Next
End Sub
No.3
- 回答日時:
1.範囲を選択
2.セルの書式設定
3.表示形式タブの分類をユーザー定義にする
4.種類に(@)→ENTER
数字だけでしたら数字を文字列として回答(1)として以下コピーでどうでしょうか。
この回答への補足
ご回答有難うございます。
やってみましたが、質問掲示板シツモンケイジバンが(質問掲示板シツモンケイジバン)と
なってしまいます…。
カタカナや数字のみ挟むというのは、数字のみある文字列を、という意味ではなくて
漢字等他の文字と数字が続いている時に数字だけ挟みたいという意味です。
「12345あいうえお」を「(12345)あいうえお」としたいという事です。
No.1
- 回答日時:
こんにちは。
一般の関数のみの処理の仕方を考えてみました。
例:
A1~A4
質問掲示板シツモンケイジバン
回答投稿カイトウトウコウ
質問掲示板シツモンケイジバン
回答投稿カイトウトウコウ
一応、30文字以内ということにしましたが、それ以上でした、ROW($A$1:$A$30)を広げてください。
B1:~B2:
=LEFT(A1,LEN(A1)-COUNT(FIND(TRUE,CODE(MID(A1,ROW($A$1:$A$30),1))<12321)))&"("&RIGHT(A1,COUNT(FIND(TRUE,CODE(MID(A1,ROW($A$1:$A$30),1))<12321)))&")"
配列数式ですから、一旦式を入力したら、目的の式にF2を押して、『ShiftとCtrlを押しながらEnterキー』を押します。
そして、フィルダウン・コピー
B3:~B4:
="("&LEFT(A3,LEN(A3)-COUNT(FIND(TRUE,CODE(MID(A3,ROW($A$1:$A$30),1))<12321)))&")"&RIGHT(A3,COUNT(FIND(TRUE,CODE(MID(A3,ROW($A$1:$A$30),1))<12321)))
こちらも、配列数式ですから、上記と同じ手順が必要です。
なお、VBAで処理したほうが簡単かもしれません。
この回答への補足
ご回答有難うございます。
ですが、すいません。ちんぷんかんぷんです…_| ̄|○
関数は「関数の貼り付け」以外使った事ありません…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 11:41
- 教えて!goo ベストアンサーを選定出来る条件を変更・・・以前との違いが無いように思いますが? 何が言いたいのでしょ 7 2023/04/01 16:43
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- その他(Microsoft Office) Excelの条件付き書式についての質問です。 2 2022/09/08 01:25
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- 大学・短大 大学での論文の文字数に関しての質問です。 大学側で指示した条件は「12,000字以上書くこと」ですが 1 2023/01/11 00:31
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/07/08 13:46
- Excel(エクセル) 条件付き書式の設定方法を教えて下さい。 2 2023/04/14 18:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelについて質問です。 ・デ...
-
Excel2010で、今の、Ex...
-
UNIQUE関数が使えないバージョ...
-
Excelについて質問です。
-
エクセルに詳しい方教えて下さ...
-
Excelで「時間の足し算」はどう...
-
Excelについて質問です。 表の...
-
オートフィルのショートカット...
-
Excel表の文字の幅を狭くしたい
-
勤務表をエクセルで作る際、 最...
-
Excelのフォントについて
-
Excel 2019 のピボットテーブル...
-
エクセルのパスワードの一括解...
-
エクセルのソートについて
-
Excel 連番を入力する方法
-
Excel 漢字二文字の先頭と最後 ...
-
列を増やさずに、月だけの件数...
-
Excelで、10000,20000,30000と...
-
エクセルの検索関数でシート内...
-
Excel 2019 での上書き保存につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル詳しい方教えて下さい
-
ExcelでA列をコピーしたいので...
-
エクセルのセル統合について
-
Excelの関数で起きた現象の原因...
-
Excelファイルが閉じられい!
-
Excelのシート背景に不明な文字...
-
エクセルの枠線
-
Excel 領収書発行
-
エクセル関数の使い方を教えて...
-
C列にF列の担当者(A〜)を順番...
-
ピポットテーブルの参照元を別...
-
EXCEl VBA
-
Excelでの判別方法
-
VBAで、サブフォルダにある複数...
-
"りんご"と"みかん"というシー...
-
マクロについて教えてください。
-
EXCELファイルが読み取り専用で...
-
同一セルに入力規則のリストと...
-
100行50列の表で、1~40列でフ...
-
なぜか「Nextに対応するForがあ...
おすすめ情報