Нужен сильно оптимизированный код. Хорошо, я получил проект и успешно справился с ним с помощью vba (в основном это помогало программистам stackoverflow, спасибо за это) Но сегодня я получил отзыв.Он удаляет еще 2 уникальные записи в записи, но я не знаю, почему он удаляет их.
Алгоритм, который я применил
Я использовал функцию COUNTIF, которую я нашел в Google
="countif(A$1:A2,A3)=0" A3 is the active cell, Checks A2,A1 for dupes
Он выдает «Ложь», если в столбце «А» есть дубликат, и «Истина», если он является уникальным. Что я понял о Каунтифе, так это то, что он проверяет все значения столбцов из этой ячейки, которые я имею в виду, давайте возьмем А4.ТАК это проверяет A2, A1, A3 для дубликата.Точно так же A10 проверяет A1 - A9 и выбрасывает либо TRue, либо False. Хорошо это работало, но я не знаю, что пошло не так. Код не работает для некоторых записей. Иногда он даже показывает False для уникальных записей.
И применение этой формулы занимает больше времени, так как у меня больше данных.Я пытаюсь сделать его более понятным и оптимизирующим. Люди говорили мне, что это не AC или другой язык, чтобы оптимизировать его, но мне нужен код, который делает мой код более оптимизированным
Мне нужен код для этих условий, кто угоднопомогите мне, так как мой счетчик не удался. Я немного беспомощен в этом.
1) У меня есть столбец, и я должен проверить наличие дубликатов в этом столбце и удалить эту строку, если это дубликат
2) У меня есть 35000 старых записей в столбце, и у меня есть новые записи 2000 каждую неделю, они добавляются.Мне нужно проверить эти 2000 записей из общего числа 37000 (поскольку мы добавили, мы получаем 35000 + 2000), и эту операцию удаления необходимо выполнять только для вновь добавленных 2000 записей, но следует проверить дубликаты для всего столбца
Позвольте мне четко объяснить вам, что у меня есть 2000 новых записей, поэтому необходимо проверять только эти записи на наличие дубликатов из 35000 записей, а также от себя (2000 записей), и удалять его, если он является дубликатом, и операция дублирования не должна выполняться.выполнено на 35000 записей старых данных.
Я нашел несколько кодов, но они удаляют даже дубликаты 35000 записей.Я установил диапазон, но он не работает.Может ли кто-нибудь помочь мне с лучшим кодом, который занимает меньше времени? Пожалуйста, спасибо
Обновление моего вопроса с помощью примера кода, который у меня есть
A B F G H I Y
PTY 39868.5 4 2 540 3 PTY39868.5425403
GTY 34446.1234 2 1 230 1 GTY34446.1234212301
PTY 3945.678 2 2 PTY3945.67822
GTY 34446.1234 2 1 230 1 GTY34446.1234212301
let us say these are old 35000 entries
Пояснение к приведенному выше примеру.
Выше 35000 записей.Я должен проверить столбцы A, B, F, G, H, I для дубликатов, если они совпадают, я должен удалить строку, я не должен беспокоиться о других столбцах c, d и т. Д., Поэтому я сделал этоиспользовал один неиспользуемый столбец Y и объединил эти значения 6 столбцов в 1 в столбце Y, используя эти
= A2 & B2 & F2 & G2 & H2 &I2 with the respective columns
Теперь проверяя столбец Y на наличие дубликатов и удаляем всю строку.Насколько мне известно, 2003 поддерживает только один столбец.
Обратите внимание, что даже в 35000 записей могут быть дубликаты, но я не должен их удалять.Пример, вы можете видеть, что 2 и последняя строка в моем примере кода являются dupes, но я не должен удалять, поскольку это старые данные.
A B F G H I Y
PTY 39868.5 4 2 540 3 PTY39868.5425403 'old
GTY 34446.1234 2 1 230 1 GTY34446.1234212301 'old
PTY 3945.678 2 2 PTY3945.67822 'old
GTY 34446.1234 2 1 230 1 GTY34446.1234212301 'old
PTY 3945.678 1 1 230 2 PTY3945.678112302 'new
PTY 39868.5 4 2 540 3 PTY39868.5425403 'new
PTY 3945.678 1 1 230 2 PTY3945.678112302 'new
Теперь обратите внимание, что Новая запись PTY (из последних 2-х) является дубликатоморигинальной записи (вначале PTY) Так что я должен удалить ее. И последняя новая запись является дубликатом самой новой записи, поэтому я должен удалить ее даже это.Поэтому в приведенном выше коде я должен удалить только последние 2 строки, которые являются дубликатами исходной записи, а также из нее.Но не следует удалять GTY, который является обманом, но который находится в оригинальной записи.
Я думаю, что дал четкое представление сейчас.Объединяет их в одну клетку.Это лучший способ подойти?как конактенатин для 40000 записей, занимающих всего 2 секунды, я думаю, что это не имеет значения, но любые другие алгоритмы к ним очень ценятся
Я слышал, что значения 45,00 и 45,00000 различны, неужели это право, может быть, в этом была проблема?так как у меня есть десятичные точки в моих данных.Я думаю, что я должен сделать
= I2 & H2 & G2 & F2 & A2 & B2
что лучше объединить? это или другой, который я отправил раньше?