Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2020, 17:36   #1
disneska
Новичок
Джуниор
 
Регистрация: 27.11.2020
Сообщений: 4
По умолчанию Перенос данных с одного листа на другой по определенным условиям

Всем привет. Мало надежд, что кто-то захочет помочь, но все же попробую,
Уже давно пытаюсть упростить одну задачу но никак не могу.(пытался адаптировать уже готовые коды - не получается)
Есть два листа, реестр и письмо на отгрузку, нужно вставлять определенные данные с реестра в письмо на отгрузку, условия по которым вставлять выделил желтым.
В примере все станет понятно какие данные и куда.

Заранее Спасибо!
Вложения
Тип файла: xlsx Пример.xlsx (28.5 Кб, 5 просмотров)
disneska вне форума Ответить с цитированием
Старый 27.11.2020, 19:16   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Думаю проще использовать UDF, например ВПР2()/VLOOKUP2()
Если я конечно правильно понял... Но не понял откуда дыры и зачем беспорядок...
Вот результат: http://prntscr.com/vrcqd4
И можно в код добавить ещё и проверку даты, если это нужно.
Код у меня такой в надстройке:
Код:
Function VLOOKUP2(Table As Variant, SearchColumnNum As Long, SearchValue As Variant, _
                n As Long, ResultColumnNum As Long)
    Dim i As Long, iCount As Long
    If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value
    VLOOKUP2 = ""
    For i = 1 To UBound(Table)
        If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1
        If iCount = n Then
            VLOOKUP2 = Table(i, ResultColumnNum)
            Exit For
        End If
    Next i
End Function
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 27.11.2020 в 19:31.
Hugo121 вне форума Ответить с цитированием
Старый 30.11.2020, 11:33   #3
disneska
Новичок
Джуниор
 
Регистрация: 27.11.2020
Сообщений: 4
По умолчанию

Hugo121,
Добрый день Hugo121!

Большое спасибо за вашу помощь, UDF отлично подходит здесь, я сам пытался сделать индекс и впр но не понимал как это реализовать.

Ещё несколько вопросов с вашего позволения:
Столбцы получатель, габариты подтягиваем с помощью ВПР ? у меня так получилось.

По дате поиск тоже очень нужен, но сам не могу добавить в эту функцию( это с помощью поискпоз ?

Дыры это чтобы было удобнее читать информацию, разделять заказы по клиентам, можно и без дыр , сделаю форматирование наверное.

Спасибо!
disneska вне форума Ответить с цитированием
Старый 30.11.2020, 11:55   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
для номера накладной и тянуть вправо и вниз:
=VLOOKUP23(Реестр!$A:$N;10;$K$9;14;$K$11;СТРОКА()-14;СТОЛБЕЦ()-1)
код:

Function VLOOKUP23(Table As Variant, SearchDateColumnNum As Long, SearchDateValue As Variant, SearchColumnNum As Long, SearchValue As Variant, _
                 n As Long, ResultColumnNum As Long)
    Dim i As Long, iCount As Long
    If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value
    VLOOKUP23 = ""
    For i = 1 To UBound(Table)
        If Table(i, SearchDateColumnNum) = SearchDateValue Then
            If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1
            If iCount = n Then
                VLOOKUP23 = Table(i, ResultColumnNum)
                Exit For
            End If
        End If
    Next i
End Function
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 30.11.2020, 11:58   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от disneska Посмотреть сообщение
Hugo121,
Столбцы получатель, габариты подтягиваем с помощью ВПР ? у меня так получилось.
можно конечно и так тянуть по номеру накладной, но я сразу всё делаю этой одной функцией, для того там в аргументах прописано
СТРОКА()-14;СТОЛБЕЦ()-1
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 30.11.2020, 12:01   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

И кстати если делать первым вариантом, но тянуть только номер накладной, а дату проверять например с помощью ВПР - то можно добиться дыр у тех, кто не подходит по дате.
И наоборот - тянем по дате, проверяем доставку - тоже будут дыры.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 30.11.2020, 15:11   #7
disneska
Новичок
Джуниор
 
Регистрация: 27.11.2020
Сообщений: 4
По умолчанию

Hugo121

Огромное спасибо за помощь!
Теперь, кажется, этого мне достаточно!

P.S. шоколадка моя пришла ?)
disneska вне форума Ответить с цитированием
Старый 30.11.2020, 15:11   #8
disneska
Новичок
Джуниор
 
Регистрация: 27.11.2020
Сообщений: 4
По умолчанию

Hugo121

Огромное спасибо за помощь!
Теперь, кажется, этого мне достаточно!

P.S. шоколадка моя пришла ?)
disneska вне форума Ответить с цитированием
Старый 30.11.2020, 15:51   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Что-то пришло, правда там написано что в 10:26...
Спасибо в любом случае
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных из одного листа на другой a.alexandr05 Microsoft Office Excel 6 19.01.2013 21:51
Перенос данных из одного листа в другой golovasas Microsoft Office Excel 2 09.06.2011 18:09
Перенос данных с одного листа на другой Melnan Microsoft Office Excel 0 01.04.2011 11:58
Перенос данных из одного листа в другой 4istii_listo4ek Microsoft Office Excel 0 15.10.2010 16:06
Перенос данных с одного листа на другой knahrn Microsoft Office Excel 4 12.08.2009 08:42