Добрый день, уважаемые знатоки! Возможно вопрос поднимался, но, видимо, плохо искал... Есть база, в колонках А - дата, B - № заказа, С - кол-во Каждый год отсчет номера начинается по-новой. № заказа может идти с пропуском. В другой книге пользователь вводит № заказа, допустим 247. А последняя запись в таблице с № заказа 276. Нужно в колонке В, текущего года, найти промежуток, куда вставить этот номер заказа (№ заказа должен идти по порядку), и, соответсвенно, вставив новую строку с введенными данными...
Добрый день, уважаемые знатоки! Возможно вопрос поднимался, но, видимо, плохо искал... Есть база, в колонках А - дата, B - № заказа, С - кол-во Каждый год отсчет номера начинается по-новой. № заказа может идти с пропуском. В другой книге пользователь вводит № заказа, допустим 247. А последняя запись в таблице с № заказа 276. Нужно в колонке В, текущего года, найти промежуток, куда вставить этот номер заказа (№ заказа должен идти по порядку), и, соответсвенно, вставив новую строку с введенными данными...strangle
Несколько утрировано, но примерно так. На листе "данные" человек вносит данные. На листе "база" нужно, чтобы данные по нажатию кнопки вставились между 9 и 10 строкой (строки заранее не известны).
Несколько утрировано, но примерно так. На листе "данные" человек вносит данные. На листе "база" нужно, чтобы данные по нажатию кнопки вставились между 9 и 10 строкой (строки заранее не известны).strangle
InExSu, вариант интересный, такой не рассматривал, спасибо! Но добиться желаемого не смог, при сортировке по двум ячейкам, если в раннем номере дата позже, тогда нумерация по-порядку не идет...
InExSu, вариант интересный, такой не рассматривал, спасибо! Но добиться желаемого не смог, при сортировке по двум ячейкам, если в раннем номере дата позже, тогда нумерация по-порядку не идет...strangle
Sub Вставка() Dim a As Integer Dim iLastRow As Long a = Right(Cells(2, 1), 2) With Sheets("база") iLastRow = .Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To iLastRow If a = Right(.Cells(i, 1), 2) And Cells(2, 2).Value = .Cells(i, 2).Value Then MsgBox ("Этот № есть в базе!") Exit Sub End If If a = Right(.Cells(i, 1), 2) And Cells(2, 2).Value < .Cells(i, 2).Value Then Range("A2:D2").Copy .Range(.Cells(i, 1), .Cells(i, 4)).Insert Shift:=xlDown Application.CutCopyMode = False MsgBox ("ГОТОВО!") Exit Sub End If If i = iLastRow And Cells(2, 2).Value > .Cells(i, 2).Value Then Range("A2:D2").Copy .Range(.Cells(i + 1, 1), .Cells(i + 1, 4)).Insert Shift:=xlDown Application.CutCopyMode = False End If Next End With MsgBox ("ГОТОВО!") End Sub
[/vba]
Здравствуйте! Может подойдет...[vba]
Код
Sub Вставка() Dim a As Integer Dim iLastRow As Long a = Right(Cells(2, 1), 2) With Sheets("база") iLastRow = .Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To iLastRow If a = Right(.Cells(i, 1), 2) And Cells(2, 2).Value = .Cells(i, 2).Value Then MsgBox ("Этот № есть в базе!") Exit Sub End If If a = Right(.Cells(i, 1), 2) And Cells(2, 2).Value < .Cells(i, 2).Value Then Range("A2:D2").Copy .Range(.Cells(i, 1), .Cells(i, 4)).Insert Shift:=xlDown Application.CutCopyMode = False MsgBox ("ГОТОВО!") Exit Sub End If If i = iLastRow And Cells(2, 2).Value > .Cells(i, 2).Value Then Range("A2:D2").Copy .Range(.Cells(i + 1, 1), .Cells(i + 1, 4)).Insert Shift:=xlDown Application.CutCopyMode = False End If Next End With MsgBox ("ГОТОВО!") End Sub
pechkin, как всегда, был о себе лучшего мнения, но знаний не хватило... Оригинал кинуть не могу, не разглашение и т.д. Верхнее решение отличное, но у меня несколько разных книг с несколькими листами(товарами), в которые должны копироваться данные с одноименного листа (лист данные заполняется через множество формул и нерационального кода vba, но сейчас не об этом) Возможно ли адаптировать этот код на поиск и занесение в разные листы разных книг?
pechkin, как всегда, был о себе лучшего мнения, но знаний не хватило... Оригинал кинуть не могу, не разглашение и т.д. Верхнее решение отличное, но у меня несколько разных книг с несколькими листами(товарами), в которые должны копироваться данные с одноименного листа (лист данные заполняется через множество формул и нерационального кода vba, но сейчас не об этом) Возможно ли адаптировать этот код на поиск и занесение в разные листы разных книг?strangle