5

文字化けした文字がいくつかあります (または、文字化けしていませんが、スカンジナビアのアクセントを持つ A などの英語以外の文字など)、約 80,000 のエントリからそれらを探す必要があります。

以外のものを含むセルを選択してフラグを立てる数式を記述できますか?

abcdefghijklmnopqrstuvwxyz?

4

3 に答える 3

2

以下は私のために働いた:

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
于 2012-11-19T16:40:17.813 に答える
1

これに対する私の小さな解決策は、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
于 2012-11-19T16:07:44.280 に答える
1

これを使用する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)

ここに画像の説明を入力

于 2012-11-19T23:36:27.280 に答える