вычислить уникальный идентификатор для сравнения записей - PullRequest
0 голосов
/ 09 мая 2020

У меня есть таблица, в которой хранятся импортированные данные. При каждом импорте мне нужно проверять, существует ли уже импортированный элемент. Я использую для этого уникальный идентификатор, и он отлично работает. НО причина совпадения может заключаться в том, что импортируется одна и та же запись (нет элементов управления диапазонами дат для создания данных импорта), или данные могли быть изменены.

Итак, моя проблема в чтобы увидеть, какой это тип, я планировал запустить cal c для 11 полей валюты, которые есть в этой записи. Я не могу просто сложить их, так как изменение одного поля (скажем, увеличение на 10, уменьшило бы другое на 10). Я подумал о Field1 x1 + Field2 x2 et c. который должен удалить зависимость.

На самом деле это не проблема vba, а скорее проблема уникальности данных.

Конечно, я мог бы сравнить 11 значений, но в VBA это беспорядочно! Любые идеи приветствуются. Большое спасибо.

Пример данных Запись в текущей базе данных: Receipt Payment DealValue Tax, пошлины и т.д. Обязанности и т. Д. 3500 0 3650 150 0 // 3650 - 150 = 3500 net квитанция

Я не хочу sh создавать идентификатор, просто набираю c, который можно сравнить с посмотрим, есть ли изменения.

1 Ответ

0 голосов
/ 10 мая 2020

В циклическом подходе вы бы сделали что-то вроде следующих строк:

firstColumnOfInterestIndex = ...
lastColumnOfInterestIndex = ...
duplicate = False
...
For Each currentRow In ActiveSheet
    For i=firstColumnOfInterestIndex to lastColumnOfInterestIndex  
        If Worksheet.Cells(currentRow.Row, i) <> expectedValue(i) Then
              Exit For
        End If
        If i == lastColumnOfInterestIndex Then
             ' A duplicate found! handle accordingly
             duplicate = True
        End If
    Next i
    If duplicate Then
         Exit For
    End If
Next currentRow
...