Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
RSS
Дублировние значений при вставке данных макросом. Как устранить?
 
Добрый день Профи,
нашла подходящий макрос, который по критерию (в столбеце Etscheidung стои 13) переносит данные на второй лист, но проблема в том, что он дублирует данные, если таковые уже есть.

Прошу помощи:
Данные не должны дублироваться, тк входящие данные будут поплняться далее на листе gehemigt.

Заранее спасибо за быстрый ответ!
ЗЫ: Может и макрос и не идеален, если есть другой вариант, буду рада узнать что-то новое!
Изменено: Leborham - 9 Апр 2018 10:39:18
 
Цитата
Leborham написал:
нашла подходящий макрос, который по критерию переносит данные на второй лист
Что это за критерий?

Цитата
Leborham написал:
проблема в том, что он дублирует данные, если таковые уже есть.
По какому признаку следует определять уникальность*

P.S. Могли бы для форума заголовки столбцов сделать на русском...
 
Цитата
Юрий М написал:
P.S. Могли бы для форума заголовки столбцов сделать на русском...
я скоректировала какой критей необходим, на русском не могу, тк на моем компьютере не установлен кирилаца, и данные на русском в макросе не читабельны..
заранее спасибо за понимание.
 
Если в столбце G значение = 13, то эту строку копировать. Так?
А на вопрос про уникальность (отсутствие повторов) Вы так и не ответили. Спрошу ещё раз: достаточно ли проверять уникальность по одному какому-нибудь столбцу? Например, по столбцу Letter?
Цитата
Leborham написал:
на русском не могу, тк на моем компьютере не установлен кирилаца,
А как Вы набираете здесь текст? Я про заголовки столбцов таблицы в примере, а не про кириллицу в макросе.
 
Leborham,

die Letter - шрифт ?
der Name - имя, название
der Preis - цена
die Abteilung - отдел
NN - ? какой-то номер ? порядковый номер ?

Эти выражения одинаковы на обоих листах.
Сделайте из них индекс (возможно, за исключением NN) и примените например словарь "dictionary".

Ps.:
1) Можете ли вы отправить/нагрузить (to upload) образец данных на два листа, не только на одном ?
2) und Sie sollten nicht "Abtelung", sondern "Abteilung" schreiben ... :-) ... словарь не врет / dictionary is not lying / Wörterbuch lügt nicht ... :-)
Изменено: ocet p - 8 Апр 2018 23:07:24
 
1. не допускайте повторений в макросе и их не нужно будет убирать
2. подходящий макрос, который Вам совсем не подходит не подходит и нам
3. Опишите задачу, которую нужно решить, а не что нужно исправлять в принятом Вами способе решения
п. 3 на самом деле должен быть в самом начале, еще перед 1
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
ocet p написал:
und Sie sollten nicht "Abtelung", sondern "Abteilung" schreiben ... :-) ... словарь не врет / dictionary is not lying / Wörterbuch lügt nicht ...
Tippfehler...
 
Цитата
Юрий М написал:
Если в столбце G значение = 13, то эту строку копировать. Так?А на вопрос про уникальность (отсутствие повторов) Вы так и не ответили. Спрошу ещё раз: достаточно ли проверять уникальность по одному какому-нибудь столбцу? Например, по столбцу Letter?
Если G = 13, то не все данные переносятся, а только часть из них на второй лист, к тому же менеджер во второй лист вносит так же дополнения.
Нет, никакой уникальности проверять не надо, в данном случае  важно только значение в столбце G = 13.

А как Вы набираете здесь текст? Я про заголовки столбцов таблицы в примере, а не про кириллицу в макросе:

Многие пишут название в макросе на русском, и когда просматриваю макрос у меня одни иероглифы, а установку русского на клавиатуре мозможна.
 
Цитата
ocet p написал: die Letter - шрифт ?der Name - имя, названиеder Preis - ценаdie Abteilung - отделNN - ? какой-то номер ? порядковый номер .
Обычно мы не пишем в таблице артикли.. всем понятно о чем речь.. особенно если таблица состоит на 3 языках.
The letter - письмо..
Я попросила лишь помощи у профи с этого форума.
Изменено: Leborham - 20 Июн 2018 00:12:06
 
Цитата
Leborham написал:
Многие пишут название в макросе на русском, и когда просматриваю макрос у меня одни иероглифы
Да я Вам не про макросы - про заголовки столбцов в таблице, про их перевод на русский. Так понятно?

Цитата
Leborham написал:
Если G = 13, то не все данные переносятся, а только часть из них на второй лист
Часть - это какие столбцы?
Цитата
Leborham написал:
Нет, никакой уникальности проверять не надо
Но Вы же сами просите, чтобы не было повторов.
 
Переименовала на   русский имя листов и титульные название.

Если два раза на макрос кликнуть, то он еще раз переносит данные на другой   лист, без проверки, есть ли уже эти данные *например строка 3 с первого листа   при нажатие на макрос дублируется на второй лист и если повторно нажать на   макрос, то он снова на следующую строку переносит те же данные..
В таблице я указала столбцы, которые надо перенести.

Заранее спасибо за помощь!
Изменено: Leborham - 9 Апр 2018 11:00:34
 
Ещё раз (последний) - при повторном выполнении макроса на листе-приёмнике не должно быть повторов. Повторов по какому столбцу? Можно ли обойтись одним?
- Зачем Вы меня процитировали? Запомните - кнопка цитирования не для ответа!
- зачем кричите? - текст в верхнем регистре расценивается, как крик.
Вернитесь в свои сообщения и устраните замечания.
 
Цитата
Юрий М написал:при повторном выполнении макроса на листе-приёмнике не должно быть повторов. Повторов по какому столбцу? Можно ли обойтись одним?
Если запись на первом листе одна, то и на втором должна быть одна... А тут постоянно дублируется, при повторном нажатие
Изменено: Leborham - 9 Апр 2018 10:41:28
 
Цитата
Leborham написал:
Если запись на первом листе одна, то и на втором должна быть одна
Неужели так трудно понять, о чём я спрашиваю? По какому столбцу определять, что запись одна и та же?
Например, Motor 01 - письмо 1554, а второй раз будет тоже  Motor 01, но письмо 123 - это разные записи?
 
это не важно... важно, что если G = 13 значит данные переносятся...
не дублируюся постоянно,строка 3 на первом листе не может ьыть 2 раза на втором листе..
иногда нет писем, но стоит уже 13... данные будут перенесенны
Изменено: Leborham - 9 Апр 2018 10:58:24
 
Всё -. я больше не могу. Ушёл из темы.
 
Как вы определяете что данные дублированы, по какому критерию?
"Все гениальное просто, а все простое гениально!!!"
 
Если я правильно понял, то так должно работать
Изменено: m.roman - 9 Апр 2018 12:43:30
 
Спасибо огромное Роман, что откликнули.. Попробовала использовать, но не работает(((
Ошибку не выдает, но и данные не переносит
 
Цитата
Leborham написал:
но не работает
и не будет потому как верхний индекс массива меньше числа с которого начинается счетчик.
Изменено: Nordheim - 9 Апр 2018 14:04:26
"Все гениальное просто, а все простое гениально!!!"
 
А какие он может данные перенести ? У вас только одна строка со значением 13, и она уже перенесена. Все больше ему переносить нечего.
 
Я добавила изменения на след строку, но он не переносит новые данные(

Цитата
Nordheim написал: и не будет потому как верхний индекс массива меньше числа с которого начинается счетчик.
еще бы знать, где посмотреть)))
 
Да, что-то я не проверил. Смотрите так.
 
m.Roman,  :*
Вы меня спасли))))
Удачи!
 
Код
Sub test()
    Dim arr(2), i&, itxt$, j&
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    arr(0) = Tabelle1.[B2].CurrentRegion.Value
    arr(1) = Tabelle5.[B2].CurrentRegion.Value
    For i = 2 To UBound(arr(1))
            itxt = arr(1)(i, 3) & arr(1)(i, 4) & arr(1)(i, 5) & arr(1)(i, 2) & arr(1)(i, 1)
            dic.Item(itxt) = 0
    Next i
    j = 0
    ReDim iarr(1 To UBound(arr(0)), 1 To UBound(arr(1), 2))
    For i = 2 To UBound(arr(0))
        If arr(0)(i, 6) = 13 Then
            itxt = arr(0)(i, 1) & arr(0)(i, 2) & arr(0)(i, 3) & arr(0)(i, 7) & arr(0)(i, 8)
            If Not dic.Exists(itxt) Then
                j = j + 1
                iarr(j, 1) = arr(0)(i, 8)
                iarr(j, 2) = arr(0)(i, 7)
                iarr(j, 3) = arr(0)(i, 1)
                iarr(j, 4) = arr(0)(i, 2)
                iarr(j, 5) = arr(0)(i, 3)
            End If
        End If
    Next i
    If j = 0 Then Exit Sub
    i = Tabelle5.Range("b" & Rows.Count).End(xlUp).Row + 1
    Tabelle5.Range("b" & i).Resize(j, UBound(iarr, 2)) = iarr
End Sub
Изменено: Nordheim - 19 Июн 2018 14:27:31
"Все гениальное просто, а все простое гениально!!!"
 
Кнопка цитирования не для бездумного нажатия [МОДЕРАТОР]

Здравствуйте,
вопрос: Почему код перестал работать? Дублирует записи и при внесение вручную новую запись?
Или удаляет данные дополненные в другие колонки?

Заранее спасибо за Ваш ответ и помощь!
 
Цитата
Nordheim написал:
ltxt = ""
Option Explicit не используете?
Хотя как по мне - это действие вообще лишнее. Потому и не мешает :)
Изменено: Hugo - 19 Июн 2018 12:27:05
 
использую...
использую код от m.Roman
 
нашла проблему, но не знаю как ее решить..

увеличила кол-во iarr(j, ..)  и arr(0)(i, ..)

после чего появился этот баг(((
 
Цитата
Leborham написал:
увеличила кол-во iarr(j, ..)  и  arr(0)(i, ..)
Каким образом?
"Все гениальное просто, а все простое гениально!!!"
Страницы: 1 2 След.
Читают тему (гостей: 1)
Наверх