文字化けした文字がいくつかあります (または、文字化けしていませんが、スカンジナビアのアクセントを持つ A などの英語以外の文字など)、約 80,000 のエントリからそれらを探す必要があります。
以外のものを含むセルを選択してフラグを立てる数式を記述できますか?
abcdefghijklmnopqrstuvwxyz?
文字化けした文字がいくつかあります (または、文字化けしていませんが、スカンジナビアのアクセントを持つ A などの英語以外の文字など)、約 80,000 のエントリからそれらを探す必要があります。
以外のものを含むセルを選択してフラグを立てる数式を記述できますか?
abcdefghijklmnopqrstuvwxyz?
以下は私のために働いた:
Option Explicit
Sub NonAscii()
Dim UsedCells As Range, _
TestCell As Range, _
Position As Long, _
StrLen As Long, _
CharCode As Long
Set UsedCells = ActiveSheet.Range("A1:A4271").CurrentRegion
For Each TestCell In UsedCells
StrLen = Len(TestCell.Value)
For Position = 1 To StrLen
CharCode = Asc(Mid(TestCell, Position, 1))
If CharCode < 97 Or CharCode > 122 Then
TestCell.Interior.ColorIndex = 36
Exit For
End If
Next Position
Next TestCell
End Sub
これに対する私の小さな解決策は、RegExpを使用することです:
Public Function demo(ByRef rngTarget As Range) As Boolean
Dim objRE As Object
Set objRE = CreateObject("vbscript.regexp")
With objRE
.Pattern = "[^a-z]"
.Global = True
'test will resolve true on any character other than a-z
demo = .Test(rngTarget.Value)
End With
Set objRE = nothing
End Function
このコードをモジュールに入れ、テストするセルの条件付き書式の数式として使用します。
数式は次のように単純になります。=demo(A1)
これに関する詳細情報が必要な場合: MSDN
もちろん、VBA を使用して、使用されているすべてのセルをテストできます。
'This code needs to be placed as a worksheet macro,
'or a worksheet needs to be specified for UsedRange
Public Sub TestAll()
Dim rngCell as Range
For Each rngCell In UsedRange.Cells
if demo(rngCell) then
rngCell.interior.color = RGB(125,125,125)
end if
Next rngCell
End Sub
これを使用するConditional Formatting
と、各セルを別々の数式でテストする必要がなく、その場でセルを強調表示できます。VBA
この数式は、各文字A1
が小文字 azであることを検証します
SUMPRODUCT(--((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=97)),--(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<=122))<>LEN(A1)