![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
名前と名字の間に全角のスペースを入れる作業をしています。
例
① 小野瀬 太郎の場合は何もしない
② 小野瀬太郎の場合は間にスペースをいれる
Range("a1", Cells(n, 1)).Replace "小野瀬", "小野瀬 ", xlPart, xlByRows
上記の場合ですとどちらもスペースが入ってしまいます。
①の場合はそのまま何もしない
②の場合は小野瀬と太郎の間にスペースを入れる
もし可能であれば小野瀬以外に佐々木や長谷川など三文字の名字の人は名前と名字の間にスペースがいれられればと思います。
現在は
Range("a1", Cells(n, 1)).Replace "川野辺", "川野辺 ", xlPart, xlByRows
Range("a1", Cells(n, 1)).Replace "大和田", "大和田 ", xlPart, xlByRows
Range("a1", Cells(n, 1)).Replace "長谷川", "長谷川 ", xlPart, xlByRows
Range("a1", Cells(n, 1)).Replace "生田目", "生田目 ", xlPart, xlByRows
Range("a1", Cells(n, 1)).Replace "長谷澤", "長谷澤 ", xlPart, xlByRows
こんな感じです。
どなたかご教授よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
こんにちは
とりあえず、ご提示の方法を踏襲するなら、先に既にスペースが入っている"小野瀬 "を"小野瀬"にしておくとかで対応できそうな気がします。
Range(範囲).Replace what:="小野瀬 ", replacement:="小野瀬", lookat:=xlPart
Range(範囲).Replace what:="小野瀬", replacement:="小野瀬 ", lookat:=xlPart
この方法の長所は、一度マクロを実行したシートに対して、再度マクロを実行したとしても変わらないという点かな?
(実行するたびにスペースが増加してゆくことはなくなる)
※ 既存のスペースが半角、全角いろいろある場合は、両方とも一旦削除するようにしておけばよろしいかと。
No.5
- 回答日時:
私の読み違えでなければ、A列のリストになっているものだと解釈しました。
今回のような場合は、全部にまとめてするのではなく、個別に処理したほうがよいのではないでしょうか。
本来は、日本語形態素解析の Kakasi を使って、名前と名字を別けます。そのためには辞書を使います。
https://oshiete.goo.ne.jp/qa/9796014.html
で書きました。辞書を入れなくてもに、かなりの精度で分かち書きが可能です。
ただ、そこまでお望みでないのでしたら、以下のような方法があります。
''スペースを抜いてしまう場合
buf = Replace(buf, Space(1), "", , , vbTextCompare)
この部分は抜いてもよいでしょう。これを入れればやり直しが可能です。
なお、以下は、その全てを可能にするものではありません。富士通の教材唐でチェックしました。
'//
Sub SpaceInNames()
Dim Rng As Range
Dim mSpace As String
Dim c As Range
Dim buf As String
Dim spcFlg As Boolean
'****ユーザー設定**
Set Rng = Range("A1", Cells(Rows.Count, "A"))
mSpace = Space(1) ' 半角スペース 任意
'****設定終わり**
' Application.ScreenUpdating = False
For Each c In Rng
If Trim(c.Value) <> "" Then
buf = c.Value
''スペースを抜いてしまう場合
buf = Replace(buf, Space(1), "", , , vbTextCompare)
'スペースのある場合
If InStr(1, buf, Space(1), vbTextCompare) > 0 Then
Do
buf = Replace(buf, Space(2), Space(1), , , vbTextCompare)
DoEvents
Loop Until InStr(1, buf, mSpace, vbTextCompare) = 1
c.Value = buf
Else
Select Case LenB(StrConv(buf, vbFromUnicode))
Case 4
buf = Mid(buf, 1, 1) & mSpace & Mid(buf, 2)
Case 6
buf = Mid(buf, 1, 2) & mSpace & Mid(buf, 3)
Case 8
buf = Mid(buf, 1, 2) & mSpace & Mid(buf, 3)
Case Is >= 10
'2番目の漢字が田か村・・で、3文字目が目でないこと
If Mid(buf, 2, 1) Like "[田村中井藤吉]" And _
Mid(buf, 3, 1) Like "[!目木]" Then
buf = Mid(buf, 1, 2) & mSpace & Mid(buf, 3)
'3番目がひらがな、カタカナ
ElseIf Mid(buf, 3, 1) Like "[あ-んア-ン]" Then
buf = Mid(buf, 1, 2) & mSpace & Mid(buf, 3)
Else
buf = Mid(buf, 1, 3) & mSpace & Mid(buf, 4)
End If
Case Else
buf = Mid(buf, 1, 2) & mSpace & Mid(buf, 3) '暫定的
End Select
c.Value = buf
End If
End If
Next
' Application.ScreenUpdating = True
End Sub
'//
Application.ScreenUpdating をコメントアウトしているのは、目で確認したいからで、シングルクォートを取ってしまってもよいです。
No.4
- 回答日時:
Likeが使えると思います。
if not cells(n,1) like “* *” then
end if
入力環境の都合上半角スペースになっていますが、
このif条件に入れればスペースを含まないもののみ処理します。
以上ご参考まで
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) エクセル 関数 指定の繰り返しの回数 以降(以前)を削除するには、 2 2022/04/24 10:29
- Visual Basic(VBA) Excel vba で1と10を正確に判断させる方法を教えてください。 TからU列に1と入力があれば 3 2022/12/26 16:54
- 野球 高校野球の話 1 2022/08/18 09:54
- Visual Basic(VBA) 空白を全て削除したい 2 2023/05/13 21:36
- Excel(エクセル) エクセルマクロで教えてください 2 2022/05/04 09:07
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
VBA 文字に半角が含まれて...
-
住宅にカナを入力する際に丁目...
-
.NET3.5におけるキーボードの「...
-
[VBScript]バイト長の判定
-
VB.net、テキストボックス入力...
-
C言語のコンパイルエラーなん...
-
全角英数字の必要性が理解できない
-
IEからEdgeへの移行に伴うIMEの...
-
プログラミングでは、半角括弧...
-
VBA Shift-JISをJISに変換する...
-
COBOLでの全角文字の判定をした...
-
VB2008の文字列の操作について
-
どうしてパソコンお宅を自称す...
-
char型全角数字から、int型半角...
-
word差し込み印刷 半角カタカ...
-
Accessでのグループ化で全角・...
-
全角スペースを削除するには?
-
日付の正規表現
-
エクセルにMicrosoft Barcode C...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
VBA 文字に半角が含まれて...
-
住宅にカナを入力する際に丁目...
-
全角英数字の必要性が理解できない
-
vba アクティブシートの名前変...
-
IEからEdgeへの移行に伴うIMEの...
-
エクセルにMicrosoft Barcode C...
-
word差し込み印刷 半角カタカ...
-
プログラミングでは、半角括弧...
-
COBOL・全角判定
-
VBで、String型のデータが、...
-
全角入力
-
VB.net、テキストボックス入力...
-
Accessのテキストボックスの入...
-
CString Format にて全角空白文...
-
メモ帳の段落の揃え方
-
エクセルでの”々”の扱い
-
封筒の宛先で縦書きの書き方
-
正規表現で、全角文字を半角文...
-
全角英数字を半角英数字に変換...
おすすめ情報