Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сравнение ячейки и удаление строки при не совпадении - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Сравнение ячейки и удаление строки при не совпадении
flywithme1299 Дата: Среда, 03.05.2023, 09:44 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
Есть задача, код работает, необходимо доделать. В ячейке J, назначен ответственный, если изменить ответственного, нужно, чтобы на его листе, у которого сменили ответственного удалилась та строка, а у другого, соответственно уже там добавляется (это уже работает). Как сделать? Чтобы удалялась строка при сравнении.
То есть, отлично все описано в названии темы.
Файл прикрепляю.
К сообщению приложен файл: 3216143.xlsm (48.2 Kb)


Сообщение отредактировал flywithme1299 - Среда, 03.05.2023, 09:45
 
Ответить
СообщениеЕсть задача, код работает, необходимо доделать. В ячейке J, назначен ответственный, если изменить ответственного, нужно, чтобы на его листе, у которого сменили ответственного удалилась та строка, а у другого, соответственно уже там добавляется (это уже работает). Как сделать? Чтобы удалялась строка при сравнении.
То есть, отлично все описано в названии темы.
Файл прикрепляю.

Автор - flywithme1299
Дата добавления - 03.05.2023 в 09:44
flywithme1299 Дата: Среда, 03.05.2023, 14:47 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
Можно как вариант совпадение сделать по наименованию товара и по имени ответственного и листа ответственного
 
Ответить
СообщениеМожно как вариант совпадение сделать по наименованию товара и по имени ответственного и листа ответственного

Автор - flywithme1299
Дата добавления - 03.05.2023 в 14:47
VBAdevelope Дата: Среда, 03.05.2023, 14:47 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 4 ±
Замечаний: 20% ±

2013
Цитата flywithme1299, 03.05.2023 в 09:44, в сообщении № 1 ()
Как сделать? Чтобы удалялась строка при сравнении.

Надо сравнивать данные в тех ячейках, в которых сменился со всеми у исполнителя, начиная с последней. Если есть схожие записи, то могут быть проблемы. Стоит ввести идентификатор записи у каждого исполнителя и тогда будет достаточно искать по идентификатору.


Макросы VBA Excel, Word на заказ.
Сказать спасибо на Юмани: 410015093172871
 
Ответить
Сообщение
Цитата flywithme1299, 03.05.2023 в 09:44, в сообщении № 1 ()
Как сделать? Чтобы удалялась строка при сравнении.

Надо сравнивать данные в тех ячейках, в которых сменился со всеми у исполнителя, начиная с последней. Если есть схожие записи, то могут быть проблемы. Стоит ввести идентификатор записи у каждого исполнителя и тогда будет достаточно искать по идентификатору.

Автор - VBAdevelope
Дата добавления - 03.05.2023 в 14:47
Pelena Дата: Среда, 03.05.2023, 19:21 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19234
Репутация: 4431 ±
Замечаний: ±

Excel 365 & Mac Excel
Если на именных листах информация только для просмотра, то можно просто заново перезаполнять листы.
Важно, чтобы названия листов совпадали с фамилиями в списке. В первоначальном примере были лишние пробелы в конце каждой фамилии
К сообщению приложен файл: 7988024.xlsm (49.9 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЕсли на именных листах информация только для просмотра, то можно просто заново перезаполнять листы.
Важно, чтобы названия листов совпадали с фамилиями в списке. В первоначальном примере были лишние пробелы в конце каждой фамилии

Автор - Pelena
Дата добавления - 03.05.2023 в 19:21
flywithme1299 Дата: Четверг, 04.05.2023, 08:33 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
Pelena, Да решение очень хорошее, но к сожалению на других листах, ответственные будут дополнительно вносит корректировки, извините, что не уточнил изначально.
Вот в файлике добавил еще не много кода.
К сообщению приложен файл: 7196402.xlsm (50.5 Kb)


Сообщение отредактировал flywithme1299 - Четверг, 04.05.2023, 11:20
 
Ответить
СообщениеPelena, Да решение очень хорошее, но к сожалению на других листах, ответственные будут дополнительно вносит корректировки, извините, что не уточнил изначально.
Вот в файлике добавил еще не много кода.

Автор - flywithme1299
Дата добавления - 04.05.2023 в 08:33
VBAdevelope Дата: Четверг, 04.05.2023, 10:12 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 4 ±
Замечаний: 20% ±

2013
В первоначальном примере были лишние пробелы в конце каждой фамилии

Уже делал гражданину макросы, в которых устранён был данный недостаток путём трима пробелов. По сути туда надо просто допилить поиск соответствующей записи для удаления


Макросы VBA Excel, Word на заказ.
Сказать спасибо на Юмани: 410015093172871
 
Ответить
Сообщение
В первоначальном примере были лишние пробелы в конце каждой фамилии

Уже делал гражданину макросы, в которых устранён был данный недостаток путём трима пробелов. По сути туда надо просто допилить поиск соответствующей записи для удаления

Автор - VBAdevelope
Дата добавления - 04.05.2023 в 10:12
flywithme1299 Дата: Четверг, 04.05.2023, 10:54 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
VBAdevelope, Да, помогли, но нумерацию сделал не много другим способом.
В итоге, давно была идея сделать идентификатор, вот сейчас сделал, он находится в столбце "S", с помощью него бы сделать как раз таки удаление строки.
К сообщению приложен файл: 2814411.xlsm (50.5 Kb)
 
Ответить
СообщениеVBAdevelope, Да, помогли, но нумерацию сделал не много другим способом.
В итоге, давно была идея сделать идентификатор, вот сейчас сделал, он находится в столбце "S", с помощью него бы сделать как раз таки удаление строки.

Автор - flywithme1299
Дата добавления - 04.05.2023 в 10:54
Nic70y Дата: Четверг, 04.05.2023, 12:01 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 8821
Репутация: 2298 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Sub Copy_()
    Application.ScreenUpdating = False
    u = Cells(Rows.Count, "A").End(xlUp).Row
    For v = 2 To u
        w = Range("J" & v).Value
        a = Range("T" & v).Value
        If w <> a And a <> "" Then
            b = Application.Match(Range("S" & v), Sheets(a).Range("S:S"), 0)
            If IsNumeric(b) Then Sheets(a).Rows(b).Delete Shift:=xlUp
        End If
        x = Sheets(w).Cells(Rows.Count, "S").End(xlUp).Row + 1
        '=ЕСЛИ(ЕПУСТО(J3);" ";G3&""&ЛЕВСИМВ(J3;1)&""&ЛЕВСИМВ(D3;1))
        Range("S" & v).FormulaR1C1 = "=IF(ISBLANK(RC[-9]),"" "",RC[-12]&""""&LEFT(RC[-9],1)&""""&LEFT(RC[-14],3))"
        Range("S" & v) = Range("S" & v).Value
        y = Application.Match(Range("S" & v), Sheets(w).Range("S:S"), 0)
        If IsNumeric(y) = False Then
            Range("A" & v & ":B" & v).Copy Sheets(w).Range("B" & x)
            Range("D" & v & ":I" & v).Copy Sheets(w).Range("D" & x)
            Range("S" & v).Copy Sheets(w).Range("S" & x)
            Sheets(w).Range("A" & x) = x - 1 'нумерация по-порядку
        End If
    Next
    '=ДВССЫЛ("'"&J2&"'!N"&СТРОКА()-ПОИСКПОЗ(J2;J$2:J2;)+1)&""
    Range("k2:k" & u).FormulaR1C1 = "=INDIRECT(""'""&RC[-1]&""'!N""&ROW()-MATCH(RC[-1],R2C[-1]:RC[-1],)+1)&"""""
    Range("k2:k" & u) = Range("k2:k" & u).Value
    'ответственный t
    Range("t2:t" & u) = Range("j2:j" & u).Value
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 701.xlsm (47.4 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 04.05.2023, 12:20
 
Ответить
Сообщение[vba]
Код
Sub Copy_()
    Application.ScreenUpdating = False
    u = Cells(Rows.Count, "A").End(xlUp).Row
    For v = 2 To u
        w = Range("J" & v).Value
        a = Range("T" & v).Value
        If w <> a And a <> "" Then
            b = Application.Match(Range("S" & v), Sheets(a).Range("S:S"), 0)
            If IsNumeric(b) Then Sheets(a).Rows(b).Delete Shift:=xlUp
        End If
        x = Sheets(w).Cells(Rows.Count, "S").End(xlUp).Row + 1
        '=ЕСЛИ(ЕПУСТО(J3);" ";G3&""&ЛЕВСИМВ(J3;1)&""&ЛЕВСИМВ(D3;1))
        Range("S" & v).FormulaR1C1 = "=IF(ISBLANK(RC[-9]),"" "",RC[-12]&""""&LEFT(RC[-9],1)&""""&LEFT(RC[-14],3))"
        Range("S" & v) = Range("S" & v).Value
        y = Application.Match(Range("S" & v), Sheets(w).Range("S:S"), 0)
        If IsNumeric(y) = False Then
            Range("A" & v & ":B" & v).Copy Sheets(w).Range("B" & x)
            Range("D" & v & ":I" & v).Copy Sheets(w).Range("D" & x)
            Range("S" & v).Copy Sheets(w).Range("S" & x)
            Sheets(w).Range("A" & x) = x - 1 'нумерация по-порядку
        End If
    Next
    '=ДВССЫЛ("'"&J2&"'!N"&СТРОКА()-ПОИСКПОЗ(J2;J$2:J2;)+1)&""
    Range("k2:k" & u).FormulaR1C1 = "=INDIRECT(""'""&RC[-1]&""'!N""&ROW()-MATCH(RC[-1],R2C[-1]:RC[-1],)+1)&"""""
    Range("k2:k" & u) = Range("k2:k" & u).Value
    'ответственный t
    Range("t2:t" & u) = Range("j2:j" & u).Value
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 04.05.2023 в 12:01
flywithme1299 Дата: Четверг, 04.05.2023, 13:35 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
Nic70y, А если мы удалим строку, то строка у этого же ответственного останется:( код работает кайф, снова выручаете:)
 
Ответить
СообщениеNic70y, А если мы удалим строку, то строка у этого же ответственного останется:( код работает кайф, снова выручаете:)

Автор - flywithme1299
Дата добавления - 04.05.2023 в 13:35
Nic70y Дата: Четверг, 04.05.2023, 13:39 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 8821
Репутация: 2298 ±
Замечаний: 0% ±

Excel 2010
Цитата flywithme1299, 04.05.2023 в 13:35, в сообщении № 9 ()
А если мы удалим строку
с данным макросом - да


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 04.05.2023, 13:41
 
Ответить
Сообщение
Цитата flywithme1299, 04.05.2023 в 13:35, в сообщении № 9 ()
А если мы удалим строку
с данным макросом - да

Автор - Nic70y
Дата добавления - 04.05.2023 в 13:39
jun Дата: Пятница, 05.05.2023, 15:29 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 42 ±
Замечаний: 0% ±

flywithme1299, здравствуйте!
Посмотрите вариант в фале.
Макросы находятся в модуле_1 и модуле листа "Заполнение"
Принцип работы:
при активации листа "Заполнение", данные из столбца J копируются на временный лист с именем "tmp" (его не удалять, по желанию можно сделать скрытым).
Затем при изменении фамилии в столбце J отрабатывает макрос Copy_, который добавляет/удаляет строки на соответствующих листах. По завершению свой работы он обновляет данные на временном листе "tmp".

После деактивации листа "Заполнение", макрос (находится в модуле листа "Заполнение"-> событие Deactivate) сверяет столбец с фамилиями на листе "Заполнение" с листом "tmp" и, если найдены расхождения (например, изменили фамилию и не нажали кнопку), по нажатию кнопки YES запускает макрос Copy_ и опять копируются/ удаляются строки на соответствующих листах (те же действия, что и при нажатии кнопки).

Также важно, чтобы имена листов совпадали. Я убрал крайние правые пробелы из столбца с фамилиями, на основании которых формируется список. Предполагается, что и фамилии сотрудников и наименования товаров уникальные значения.
К сообщению приложен файл: primer.xlsm (54.4 Kb)
 
Ответить
Сообщениеflywithme1299, здравствуйте!
Посмотрите вариант в фале.
Макросы находятся в модуле_1 и модуле листа "Заполнение"
Принцип работы:
при активации листа "Заполнение", данные из столбца J копируются на временный лист с именем "tmp" (его не удалять, по желанию можно сделать скрытым).
Затем при изменении фамилии в столбце J отрабатывает макрос Copy_, который добавляет/удаляет строки на соответствующих листах. По завершению свой работы он обновляет данные на временном листе "tmp".

После деактивации листа "Заполнение", макрос (находится в модуле листа "Заполнение"-> событие Deactivate) сверяет столбец с фамилиями на листе "Заполнение" с листом "tmp" и, если найдены расхождения (например, изменили фамилию и не нажали кнопку), по нажатию кнопки YES запускает макрос Copy_ и опять копируются/ удаляются строки на соответствующих листах (те же действия, что и при нажатии кнопки).

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

Автор - jun
Дата добавления - 05.05.2023 в 15:29
flywithme1299 Дата: Среда, 10.05.2023, 14:06 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
jun, ошибка почему-то в строке
Код
arr(v, 1) = Trim(arr(v, 1))
 
Ответить
Сообщениеjun, ошибка почему-то в строке
Код
arr(v, 1) = Trim(arr(v, 1))

Автор - flywithme1299
Дата добавления - 10.05.2023 в 14:06
jun Дата: Среда, 10.05.2023, 15:03 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 42 ±
Замечаний: 0% ±

flywithme1299, у Вас лист с именем tmp создан?
 
Ответить
Сообщениеflywithme1299, у Вас лист с именем tmp создан?

Автор - jun
Дата добавления - 10.05.2023 в 15:03
flywithme1299 Дата: Среда, 10.05.2023, 15:09 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
jun, Да конечно
 
Ответить
Сообщениеjun, Да конечно

Автор - flywithme1299
Дата добавления - 10.05.2023 в 15:09
jun Дата: Среда, 10.05.2023, 15:24 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 42 ±
Замечаний: 0% ±

Странно.
P.S.
Нашел ошибку в макросе. В приложенном файле исправленный код. Тестируйте. :)
В этом варианте лист с именем tmp создается автоматически, если ещё не создан
К сообщению приложен файл: primer_v2.xlsb (42.7 Kb)


Сообщение отредактировал jun - Среда, 10.05.2023, 15:56
 
Ответить
СообщениеСтранно.
P.S.
Нашел ошибку в макросе. В приложенном файле исправленный код. Тестируйте. :)
В этом варианте лист с именем tmp создается автоматически, если ещё не создан

Автор - jun
Дата добавления - 10.05.2023 в 15:24
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!