| 
    
     |  | γさん 
 回答有り難うございます。
 返信が遅れてしまい申し訳ありません。
 
 以前の解答で検出用セルに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
 
 
 |  |