[[20240804211058]] 『セル内で文字の位置を合わせたい』(CCC) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『セル内で文字の位置を合わせたい』(CCC)

閲覧ありがとうございます。
Excelのセルの中で、文字の位置を合わせる方法をご教授いただければと思います。


田中 花子   :←この位置を
田中 徹    :←すべて上と同じにしたい
John Smith   :←アルファベットや半角数字でずれる場合でも

このような場合に:の位置を合わせる方法を教えていただけないでしょうか。

名前をA列、:をB列など列を分けるのはNG、すべて同じセルに入力されています(セル結合です)。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


 フォントは何だろうか?
 もし、MS PゴシックのようなPのつくフォントだった場合はMS ゴシックのようなPのつかないフォントにしてみてくれ。

(ねむねむ) 2024/08/05(月) 08:51:45


Windows10の内容だけど、ほぼ同じことでしょう。

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.