|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.11.2018, 22:06 | #1 |
Пользователь
Регистрация: 22.11.2018
Сообщений: 13
|
Поиск значений из нескольких листов в первом листе
Здравствуйте.
Исходные данные таковы (файл во вложении): 1. Имеется файл состоящий из 4-х листов (количество листов может быть и 5, и 10, и 20). 2. На первом листе ("ОсновнойЛист") имеются данные, состоящие из 2-х столбцов. Нас интересует только первый столбец "A" (текст). 3. Имеется пачка новых листов ("НовыйЛист1", "НовыйЛист2", "НовыйЛист3" и т.д.), состоящие из 2-х столбцов "A" (текст) и "B" (числа). Задача: 1. Найти все значения из первого столбца "А" листов "НовыйЛист1", "НовыйЛист2", "НовыйЛист3" в столбце "A" листа "ОсновнойЛист". 2. Если текст найден (по сути мы найдем нужную нам строку), то на листе "ОсновнойЛист" записать в строке в соседнюю ячейку (для "НовыйЛист1" это будет 3-й столбец "C", для "НовыйЛист2" это будет 4-й столбец "D" и т.д.) от найденного нами текста значение соседней ячейки (число, из например "НовыйЛист1"), текст которой мы искали. Возможно немного сумбурно написано, но открыв вложенный файл станет понятнее. 3. Если текст не найден, то на листе "ОсновнойЛист" в конец первого столбца "А" записать этот текст. Выделить его красным цветом. И опять записать в соседнюю ячейку значение соседней ячейки (число, из например "НовыйЛист1"), текст которой мы искали. Простой формулой здесь точно не отделаться. А моих навыков программирования точно не хватит для решения данной задачи. |
22.11.2018, 22:45 | #2 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
1. Добавить в конец столба А листа Основной, с листов НовыйЛист1..N те позиции которых еще нету в столбце А.
2. прописать ВПР/СУММЕСЛИ для поиска значений из каждого листа. Ваших навыков программирования хватит чтобы организовать 3 цикла для поиска "нового" наименования? Код:
или другой вариант поиска "новых" наименований Код:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. Последний раз редактировалось Aleksandr H.; 23.11.2018 в 00:06. Причина: добавил код |
23.11.2018, 02:05 | #3 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
23.11.2018, 07:04 | #4 |
Пользователь
Регистрация: 22.11.2018
Сообщений: 13
|
Спасибо огромное. Именно то, что нужно.
Я пытался делать просто вот такой формулой =ЕСЛИ(ЕНД(ВПР(A3:A32;'Новый лист 1'!$A$3:$B$32;1;ЛОЖЬ));0;ВПР(A3:A32 ;'Новый лист 1'!$A$3:$B$32;2;ЛОЖЬ)) Не сочтите за наглость, но еще вопрос: 1. Последним столбцом на листе "ОсновнойЛист" делать суммирование новых записанных чисел в каждой строке. Столбец будет называться "Всего". 2. Самым последним столбцом делать разность: столбец "Всего" минус столбец "Количество" (это столбец "B"). После этих правок всё будет просто идеально. |
23.11.2018, 08:13 | #5 |
Пользователь
Регистрация: 22.11.2018
Сообщений: 13
|
Я так понимаю нужно будет организовать еще 2 цикла.
|
23.11.2018, 11:58 | #6 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Нет, две строки для вставки формул. А м.б. одна. Доберусь до компа - напишу.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
23.11.2018, 22:54 | #7 |
Пользователь
Регистрация: 22.11.2018
Сообщений: 13
|
Хорошо. Буду ждать.
|
24.11.2018, 16:35 | #8 |
Пользователь
Регистрация: 22.11.2018
Сообщений: 13
|
Последний столбец ищу вот так:
Dim lCol As Long lCol = Worksheets(1).Cells(3, Columns.Count).End(xlToLeft).Column Далее пишу формулу суммирования новых записанных чисел. Но никак не получается записать ее корректно, отталкиваясь от найденного значения последнего столбца. |
24.11.2018, 16:52 | #9 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
Код:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
24.11.2018, 17:43 | #10 |
Пользователь
Регистрация: 22.11.2018
Сообщений: 13
|
Вот так оставлю:
lCol = Worksheets(1).Cells(2, Columns.Count).End(xlToLeft).Column Worksheets(1).Cells(2, lCol + 1) = "Всего" Worksheets(1).Cells(2, lCol + 2) = "Результат" ' n1 = Split(Cells(1, lCol).Address, "$")(1) ' MsgBox ("Последний столбец: " & n1 & lCol), vbInformation Cells(3, lCol + 1).Resize(j - 2 + di.Count, 1).FormulaR1C1 = "=SUM(RC3:RC[-1])" Cells(3, lCol + 2).Resize(j - 2 + di.Count, 1).FormulaR1C1 = "=rc[-1]-rc2" |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Взятие определенных данных с других листов в таблицу на первом листе. | Merelins | Microsoft Office Excel | 3 | 30.08.2013 15:25 |
Поиск значений на листе. Нужно оптимизировать | Alex+ | Microsoft Office Excel | 3 | 30.08.2012 10:03 |
Сбор данных из нескольких листов на один с удалением дубликатов, но суммированием значений | strannick | Microsoft Office Excel | 4 | 10.04.2012 19:18 |
Сравнение нескольких листов и перенос значений | r-r | Microsoft Office Excel | 1 | 06.10.2011 11:46 |
отражение на листе значений из других листов | alexarorel | Microsoft Office Excel | 1 | 20.04.2011 20:23 |