Удалить приблизительные совпадающие числа из двух столбцов (Amt1 и Amt 2) - PullRequest
0 голосов
/ 17 мая 2019

Нужна помощь с кодом VBA, чтобы удалить приблизительные совпадающие числа из двух столбцов, которые являются Amt1 и Amt 2:

Amt 1   Amt 2
412.82  0
671.44  0
54.25   412.83
574.89  671.44
0       484.2
0       370.53
0       54.25
0       574.9
0       594.43

Желаемый результат: я хочу 412,82 из столбца Amt 1 и 412,83 из столбца Amt 2 должно бытьудалены из обеих колонн.

Sub removedup()
    Dim source As Range
    Dim iCol1 As Long
    Dim iCol2 As Long
    Dim nRow1 As Long
    Dim nRow2 As Long
    Dim nCol As Long
    Dim nRow As Long

    Set source = Selection

    nCol = source.Columns.Count
    nRow = source.Rows.Count


     iCol1 = 1
     iCol2 = 2
    For iRow1 = 1 To nRow
    For iRow2 = 1 To nRow
    If (Cells(iRow1, iCol1) - Cells(iRow2, iCol2) >= -3) And (Cells(iRow1, iCol1) - Cells(iRow2, iCol2)) <= 3 Then
                Cells(iRow1, iCol1) = ""
                Cells(iRow2, iCol2) = ""
     End If

     Next iRow2
     Next iRow1
 End Sub


Data here

1 Ответ

0 голосов
/ 17 мая 2019

На самом деле эта задача будет намного сложнее, как вы думаете

Чтобы найти похожих значений, вам необходимо работать с расстояниями между этими значениями, и если расстояние меньше определенного порогового значения, они считаются "похожими".

Но это становится действительно трудно, если есть еще подобное расстояние.

Мои мысли, представьте следующие данные:

enter image description here

Если вы определите, что расстояние <= 0.02 считается одинаковым, то следующие пары считаются одинаковыми:

enter image description here

Сценарий 1
Вы начинаете сравнение сверху и обнаруживаете, что 412,84 и 412,83 похожи, и немедленно удаляете их. Тогда вы останетесь с 412,81 и 412,85, которые не похожи (расстояние 0.04), и они будут сохранены.

Сценарий 2
Сначала вы сравниваете 412,84 и 412,85 и удаляете их как похожие, тогда вы останетесь с 412,81 и 412,83, и они будут также удаляться как похожие. Никакие значения не будут сохранены вообще.

Что это значит?

Существует не только одно решение для этого сценария, и вы получите разные результаты для одного и того же набора данных (с разными упорядоченными значениями). Таким образом, вы должны вычислить всех сценариев и решить, какой из них является правильным, потому что ваш алгоритм не может решить это.

Что теперь делать?

Переосмыслите, в чем ваша проблема. Определите новые правила, чтобы для такого случая было только одно определенное решение. В противном случае вы получите случайные результаты.

Возможно, вы задали не тот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...