『セル内で文字の位置を合わせたい』(CCC)
閲覧ありがとうございます。
Excelのセルの中で、文字の位置を合わせる方法をご教授いただければと思います。
例
田中 花子 :←この位置を
田中 徹 :←すべて上と同じにしたい
John Smith :←アルファベットや半角数字でずれる場合でも
このような場合に:の位置を合わせる方法を教えていただけないでしょうか。
名前をA列、:をB列など列を分けるのはNG、すべて同じセルに入力されています(セル結合です)。
< 使用 Excel:Excel2021、使用 OS:Windows11 >
フォントは何だろうか? もし、MS PゴシックのようなPのつくフォントだった場合はMS ゴシックのようなPのつかないフォントにしてみてくれ。
(ねむねむ) 2024/08/05(月) 08:51:45
https://1091.site/posts/windows/japanese-monospace-fonts-initially-insatlled-on-windows10
(CCB逮捕) 2024/08/05(月) 09:34:02
●処理例01 : ユーザー定義関数(ワークシート関数を使用)
結合セルに以下の関数を入れて使用する 式=IF(A1<>"",FormatTextColon(A1),"") 下にコピしてフォントを適正なものにする
Function FormatTextColon(txt As String) As String Dim k As Long Dim w As Long Dim n As Long Dim txtCh As String w = 20 ' コロン配置位置指定(例 : 20バイト目) k = LenB(StrConv(txt, vbFromUnicode)) If k < w Then n = w - k txtCh = txt & Space(n) & ":" Else txtCh = txt & ":" End If FormatTextColon = txtCh End Function
●処理例02 : 全部VBAで処理する
A列にある名前のバイト数を取得し、B列に出力後 コロンの配置位置を計算し、BC列を結合後調整する
Sub Sample_01() Dim ws As Worksheet Dim q As Long, n As Long, lr As Long, k As Long, w As Long Dim txt As String, fmtTxt As String Set ws = ThisWorkbook.Sheets("Sheet1") '(適宜変更) lr = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row w = 20 ' コロン配置位置指定(例 : 20バイト目)
'処理 Application.ScreenUpdating = False For q = 1 To lr txt = ws.Cells(q, 1).Value k = GetByteCount(txt) If k < w Then n = w - k ' 計算処理 fmtTxt = txt & Space(n) & ":" Else ' 名前が20バイト以上の場合、そのままコロンを追加 fmtTxt = txt & ":" End If ws.Cells(q, 2).Value = fmtTxt '結果出力 Next q
'出力後の調整 For q = 1 To lr With ws.Range(ws.Cells(q, 2), ws.Cells(q, 3)) .Merge ' 結合処理 .HorizontalAlignment = xlLeft '左寄せ .Font.Name = "HG明朝B" .Font.Size = 10 '(適宜変更) End With Next q Application.ScreenUpdating = True End Sub
Function GetByteCount(txt As String) As Long 'バイト数を取得して返す GetByteCount = LenB(StrConv(txt, vbFromUnicode)) End Function
※バイト数が適応するフォントをCCB逮捕さんが 教えてくれたサイトで選んでください。 (あみな) 2024/08/05(月) 14:43:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.