A、I、E列の、2行、6行、10行、14行・・・(102行まで4行飛び)
に住所の文字列が入っています。
そのときに、半角、全角問わず、1234567890、1234567890の数字が入って【いない】ときだけ、フォントを赤く、太字で表示させたいのです。
条件付き書式をやってみましたが、どうもうまくいきませんでした。
(countif利用の相対参照等で)
ですので、マクロ回答を期待いたします。
よろしくお願いいたします。
>半角、全角問わず、
>1234567890、
>1234567890
>の数字が入って【いない】ときだけ、
>フォントを赤く、
>太字で表示させたいのです。
下記、テスト動画です。
https://www.youtube.com/watch?v=aqiy53cyVGs
北海道
北海道札幌市1-2-3
神奈川県横浜市99番地
神奈川県町田市五丁目六番七号
沖縄XXXアパート201号
1.下記のモジュールを貼り付ける
※alt+F11や開発から
Option Explicit '半角の0から9 '全角の0から9 'が、一文字でも入っていたら"OK"の文字を返す '入っていないときは"NG"を返す そんなユーザ関数を作成 Public Function chk0_9(strCHK As String) As String Dim strRET As String 'リターン値 Dim n As Integer Dim strMOJI As String '一文字 Dim nCODE As Integer '文字コードを保管 strRET = "NG" 'NG エラーで初期化 For n = 1 To Len(strCHK) '先頭1文字目から文字数分ループ strMOJI = Mid(strCHK, n, 1) '一文字取り出す nCODE = Asc(strMOJI) '文字コードに変換 '範囲をチェックする If Asc("0") <= nCODE And nCODE <= Asc("9") Then strRET = "OK" '一文字でも見つかったのでリターン値にOKセット Exit For 'ひとつでも見つかればループを抜ける End If '全角数字のチェック If Asc("0") <= nCODE And nCODE <= Asc("9") Then strRET = "OK" '一文字でも見つかったのでリターン値にOKセット Exit For 'ひとつでも見つかればループを抜ける End If Next chk0_9 = strRET '最後にリターン値をセットして、関数終了 End Function
2.セルの条件書式に式を貼り付ける
2.1 セルの強調表示ルール
で
その他を選択する
2.2 数式を使用して、書式設定するセルを決定
式に =chk0_9(チェックするセル)="NG" を 入れ
書式をアカにする
2.3 条件書式をコピーする
ペンキのハケみたいなアイコン?
から
書式をコピーする
ユーザ関数と条件書式でやってみました。
何かの参考となれば、うれしいです・・・
※ぐだぐたのテスト動画は笑ってゆるしてください・・・
以下を試してみてください。
Excel2016で確認しています。
Sub chkNum()
Dim wkSh As Worksheet
Dim wkRange As Range
Dim wkAddRange As Range
Dim wkCell As Range
Dim wkStr
Dim wkI
Dim wkFlg
Set wkSh = ActiveSheet
'チェック対象セル群を決定
Set wkRange = wkSh.Range("A2, I2, E2")
For wkI = 6 To 102 Step 4
Set wkAddRange = wkSh.Range("A" & wkI & ",I" & wkI & ",E" & wkI)
Set wkRange = Union(wkRange, wkAddRange)
Next wkI
'セル毎に数字を含むかチェックする
For Each wkCell In wkRange
wkStr = StrConv(wkCell, vbNarrow) '半角に統一してからチェックする
wkFlg = 0
For wkI = 1 To Len(wkStr)
If Mid(wkStr, wkI, 1) >= "0" And Mid(wkStr, wkI, 1) <= "9" Then
wkFlg = 1
Exit For
End If
Next wkI
If wkFlg = 0 Then
'If wkFlg = 0 And (Trim(wkCell) <> "") Then
' ↑セルがヌルおよびブランクのみの場合、処置しない(必要でもないけど)
'数字を含まない場合、セルの文字フォントの属性を変更する
wkCell.Font.Color = RGB(255, 0, 0)
wkCell.Font.Bold = True
Else
'設定を戻す
wkCell.Font.ColorIndex = xlAutomatic
wkCell.Font.Bold = False
End If
Next
End Sub
類似する回答になってしまいました。
せっかく考えたのでコメントさせてください。
webnaveさんと同じ条件付き書式の式です。
=COUNT(INDEX(FIND(ROW($1:$10)-1,ASC(A2)),))=0
でもできるはずです。
条件付き書式の範囲の右上がA2です。
ありがとうございます!できました。わざわざありがとうございました。感謝いたします!