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で処理したほうが簡単かもしれません。
この回答への補足
ご回答有難うございます。
ですが、すいません。ちんぷんかんぷんです…_| ̄|○
関数は「関数の貼り付け」以外使った事ありません…。
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.3
- 回答日時:
1.範囲を選択
2.セルの書式設定
3.表示形式タブの分類をユーザー定義にする
4.種類に(@)→ENTER
数字だけでしたら数字を文字列として回答(1)として以下コピーでどうでしょうか。
この回答への補足
ご回答有難うございます。
やってみましたが、質問掲示板シツモンケイジバンが(質問掲示板シツモンケイジバン)と
なってしまいます…。
カタカナや数字のみ挟むというのは、数字のみある文字列を、という意味ではなくて
漢字等他の文字と数字が続いている時に数字だけ挟みたいという意味です。
「12345あいうえお」を「(12345)あいうえお」としたいという事です。
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.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.6
- 回答日時:
#5 の訂正です。
漢字の検索について
私の書いたものは、JIS漢字のフルサポートをしていません。
"[一-钁]+")
JISの第二水準の途中までになっています。実務的には問題はないかもしれませんが、JIS文字の最後までに訂正します。
訂正後
"[一-龝]+")
もし、Unicode 文字フルサポートするのでしたら、
"[\u4E00-\u9FA5\uF900-\uFA2D]+"
このようになります。
なお、Excelのワークシート上では、標準では、Unicode文字は使いません。
お探しの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ランキング
-
エクセル初心者です 関数の入れ...
-
Microsoft1Officeの互換ソフト...
-
Excel ピボットテーブルで日付...
-
エクセル関数を教えてください
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
LOOKUP関数を使えばいいのでし...
-
エクセル 白黒印刷で白線を印刷...
-
【関数】先頭だけにある、半角...
-
【関数】適切な文字数の数字を...
-
Excelのチェックボックスの使い...
-
エクセルでの作業計算方法について
-
Excelのpivotについて質問です
-
WPS OFFICEでの縦書きについて
-
時間によってファイル名が変わ...
-
エクセルのセルに同じ大きさの...
-
Aというブックの1というシート...
-
エクセルの順位別一覧表の自動...
-
西暦や和暦の表示をyyyymmdd表...
-
【マクロ】エクセルにかいてあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報