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 条件書式をコピーする
ペンキのハケみたいなアイコン?
から
書式をコピーする
ユーザ関数と条件書式でやってみました。
何かの参考となれば、うれしいです・・・
※ぐだぐたのテスト動画は笑ってゆるしてください・・・
>半角、全角問わず、
>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
ありがとうございます!ばっちりできました!
条件付き書式でうまくいかないとのことですが
どううまくいかないのかわかりませんが
判定処理だけVBAとして、それを条件付き書式に使用すればできませんか?
判定条件は、
半角、全角問わず、1234567890、1234567890の数字が入って【いない】
とのことなので、
「0~9または、0~9が1文字でも含まれているか」の結果を否定すればよろしいかと。
例えば、次のようにすれば、数字が含まれていない時、TRUEが返ります。
Public Function notExistsDigits(ByVal sValue As String) As Boolean
notExistsDigits = Not sValue Like "*[0-90-9]*"
End Function
ちなみに、上記の例では、長さ0の文字列もTRUEが返ります。
ありがとうございます。条件付き書式に使用すればできませんか?←この条件付き書式が具体的にどのような数式になるのかわかりませんでした(スキル不足で申し訳ありません)ご回答に感謝します。
条件付き書式
=SUMPRODUCT(ISNUMBER(VALUE(MID(A1,COLUMN(OFFSET($A$1,,,,LEN(A1))),1)))*1)=0
↑
これで出来るはずですが
ごめんなさい。なぜかできませんでした。
と、思いましたらA1を該当セルに変えたらできました。感謝いたします!
ガイドラインの
2.Ⅵ「同一あるいは類似の内容の質問や回答を連続してあるいは多数投稿する行為」
に違反する内容の回答をしてしまったため、消しました。
すみませんでした。
とんでもないです!
ありがとうございます!すごすぎる回答なので、一度ゆっくりみさせてくださいね。時間をかけたいので、お待ちくださいませ。心より感謝いたします。
2018/02/05 04:38:13ありがとうございます。しっかりできました。動画回答に驚きました。お時間かけてくださって感謝します。
2018/02/07 04:46:07