0

値に基づいて多数のセルをクリアすることは可能>1ですか? Excel for Mac 2011 を使用しています。

>1大規模なデータセット (600 行 x 450K) で数千の値を空のセルに変換したいと考えています。値は 0 から 1 の範囲であると想定されていますが、エントリが>1(1000-10000) である場所全体にエラーが散在しており、行を正確に平均化することができません。

ところで:すべてのセルを値で強調表示した後、「色に基づいてセルをクリアする」ために以前に投稿されたマクロを試しました>1が、これは失敗しました。RGB ルックアップ テーブルの指示が Excel のバージョンと一致しないため、推測していますか? (色に基づいてセルの内容をクリアしますか? )

4

2 に答える 2

1

処理したい領域を選択して、これを試してください:

Sub ClearSome()
    Dim r As Range, rr As Range, rClear As Range
    Set rr = Intersect(Selection, ActiveSheet.UsedRange)
    Set rClear = Nothing
    For Each r In rr
        If IsNumeric(r) Then
            If r.Value > 1 Then
                If rClear Is Nothing Then
                    Set rClear = r
                Else
                    Set rClear = Union(rClear, r)
                End If
            End If
        End If
    Next r

    If Not rClear Is Nothing Then
        rClear.Clear
    End If
End Sub
于 2014-05-31T12:11:45.627 に答える
1

データのサイズを考えると、配列に読み込んで配列をループし、配列をワークシートに書き戻す方が効率的かもしれません。

これを試して:

Sub RemoveValues()
    Dim values(), arrayWidth As Integer, arrayHeight As Integer, i As Integer, j As Integer

    values = Range("A1:C5") // update as per your set up
    arrayWidth = UBound(values, 2)
    arrayHeight = UBound(values, 1)

    For j = 1 To arrayHeight
        For i = 1 To arrayWidth
            If values(j, i) > 1 Then
                values(j, i) = vbNullString
            End If
        Next i
    Next j

    Range("A1").Resize(arrayHeight, arrayWidth) = values
End Sub
于 2014-05-31T12:36:30.650 に答える