|
γさん
回答有り難うございます。
返信が遅れてしまい申し訳ありません。
以前の解答で検出用セルに1を立てるということで、
マクロ作成にトライしておりました。
作成したマクロを以下に示しますが、
これだと、A列が1の時にしか1を立ててくれませんでした。
>なお、上記ではerror かどうかの判定はできているものとしていますが、
>ここも数式で判定するということなら、確認が必要な点があります。
>> Z座標が(最大値と最小値の差)*2/3+最小値よりも大きいこと
>この最大、最小とはどのような範囲での最大最小なのですか?
>全ての範囲ですか?
>それとも、特定の範囲に絞ってということはありますか
>(例:x座標データ番号が1のものに限定するとか)
検出範囲としては、Z座標すべて(E列全て)の範囲です。
>考え方は、
>(1)E列がerrorになっている時の、B列の値(y座標番号)を
> Dictionaryに登録する。
Dictionaryに登録という手法自体知らなかったです...。
次回に活かせるよう精進します。
-----------作成したマクロのコード-----------
Sub エラー値検出()
'
' エラー値検出 Macro
' 不正値を削除
'
Dim lRow As Long
Dim i As Long
Dim izmax As Long
Dim izmin As Long
Dim iz As Long
Dim izval As Integer
Worksheets("Sheet1").Activate
lRow = Cells(Rows.Count, 1).End(xlUp).Row
izmax = Application.WorksheetFunction.Max(Cells(Rows.Count, 5).End(xlUp))
izmin = Application.WorksheetFunction.Min(Cells(Rows.Count, 5).End(xlUp))
iz = izmin + ((izmax - izmin) / 3)
Application.ScreenUpdating = False
For i = lRow To 2 Step -1
If Cells(i, 5).Value > iz And Cells(i, 1).Value = 1 Then
Cells(i, 6).Value = 1
End If
Next i
Application.ScreenUpdating = True
For i = lRow To 2 Step -1
If Cells(i, 6).Value = 1 Then
izval = Cells(i, 2).Value
End If
If Cells(i, 2).Value = izval Then
Cells(i, 7).Value = 1
End If
Next i
'
End Sub
|
|