Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21

ВПР или макрос?

27.05.2013, 14:21. Показов 7819. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые, добрый день!

25.05.2013A22334
25.05.2013E232345
25.05.2013H454545
25.05.2013N676776
25.05.2013P89797
25.05.2013S34423
25.05.2013K5656
25.05.2013L77687
25.05.2013Z7868
25.05.2013М89898
26.05.2013A768768
26.05.2013E23423423
26.05.2013H90890
26.05.2013N879789
26.05.2013P655656
26.05.2013S53453
26.05.2013R36575
26.05.2013K787688
26.05.2013L34535


Имеется данная табличка. Мне необходимо копировать содержимое строк по порядку, если в первой ячейке строки имеется дата например равная 25.05.2013. Т.е. на чистом листе мы получим:

A22334
E232345
H454545
N676776
P89797
S34423
K5656
L77687
Z7868
М89898

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

=ВПР(Дата$;Диапазон$;2;0) =ВПР(Дата$;Диапазон$;3;0)

Но так он будет вприть только первую строку, и если тянуть таблицу на чистом листе вниз сами понимаете получим снова первую строку в каждой следующей. А мне нужно содержимое всех строк с этой датой. И чего скрывать, затем нужно такое же содержимое с другой датой.

Как быть? Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2013, 14:21
Ответы с готовыми решениями:

Аналоги или ускорение ВПР через макрос
Есть лист, в который простейшим ВПР-ом подтягиваются данные из другого листа. Но...на листе оооочень большое количество строк (от 300 000 и...

Макрос вместо ВПР
Добрый день, уважаемые форумчане! Подскажите, пожалуйста, макрос, который мог бы заменить формулу ВПР в Excel. Есть файл 123. В нём 2...

Макрос впр по 3 столбцам
Здравствуйте!!!! - Помогите преобразовать макрос впр с рекордера в нормальный вид. - вместо 0 и #н/д чтоб остались пустые ячейки ...

18
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
27.05.2013, 16:26
Где-то была UDF ВПР2() - там можно указать каое по счёту совпадение нужно брать.
Но быстрее конечно будет макрос, фильтрующий данные.
А вообще, чем фильтр не нравится?
0
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
27.05.2013, 16:59
Потестируй
Вложения
Тип файла: rar Копирование дат2.rar (23.1 Кб, 37 просмотров)
0
81 / 24 / 2
Регистрация: 18.01.2013
Сообщений: 74
27.05.2013, 17:08
формула массива:

выделить диапазон, в котором будут ответы (сразу нужное количество ячеек в столбце, можно с запасом), ввести эту формулу, нажать Ctrl + Shift + Enter

в формуле $L$2:$L$17 - диапазон со значениями, которые нужно выбирать; K2:K17 - диапазон с условием (у вас это первый столбец); $O$2 - ячейка со значением, которое нужно искать в диапазоне с условием
здесь СТРОКА()-4 -4 означает что диапазон с результатом находится на 4 строки ниже, чем диапазон для поиска условий.

=ЕСЛИОШИБКА(ИНДЕКС($L$2:$L$17;НАИМЕНЬШИЙ (ЕСЛИ($O$2=K2:K17;СТРОКА(L2:L17)-1;"");СТРОКА()-4));"")
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21
27.05.2013, 20:58  [ТС]
Привет всем!! Огромное спасибо за ответы. Я бы хотел прояснить ситуацию как можно конкретнее. Поэтому я подготовил точный пример. Во вложении будет файлик, с которым можно будет по экспериментировать.
Вложение 273777

А сейчас я расскажу механику отчета над которым решается вопрос ВПР или Макрос:

1. Имеется некая сводная табличка. Она выгружается автоматически в фаил экселя на первый лист.

Вложение 273776

В диапазоне столбцов =F:H находится необходимая нам табличка (=F14:H28) с данными.
Не мало важно сказать, что данные в сводной таблице, каждый день выгружаются с совершенно разным набором строк.
Т.е. Строк в каждой таблице может добавиться/уменьшится на 2-3, а вот в столбцах таблицы останутся на своих местах. Пример:

Вложение 273774

или

Вложение 273773

Как видите перемещается наша таблица (=F14:H28) построчно, но остается в своем диапазоне столбцов =F:H


2. Далее как уже необходимо по заданию. Мы должны вытащить из нашей таблички (=F14:H28) Brend и DISC на необходимые нам даты на следующий лист.

Вложение 273775

слева 21 справа 22.

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

Надеюсь описал процесс понятно Спасибо!

P.s. макрос форумчанина показался мне сложным, не могли бы вы прокомментировать код?
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
27.05.2013, 20:59
Вложения то не загружаются.
1
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21
27.05.2013, 21:00  [ТС]
Цитата Сообщение от toiai Посмотреть сообщение
Вложения то не загружаются.
Спасибо! Исправил. Пробуйте снова.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
27.05.2013, 21:04
Увы не получается. Прикрепите файлы к сообщению с теми же именами.
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21
27.05.2013, 21:08  [ТС]
Какие-то проблемы на форуме, теперь это не возможно.









ВПР или Макрос..xlsx
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21
27.05.2013, 21:16  [ТС]
И еще раз)). Не грузились вложения. Я бы хотел прояснить ситуацию как можно конкретнее. Поэтому я подготовил точный пример. Во вложении будет файлик, с которым можно будет по экспериментировать.


А сейчас я расскажу механику отчета над которым решается вопрос ВПР или Макрос:

1. Имеется некая сводная табличка. Она выгружается автоматически в фаил экселя на первый лист.

Вложение 273792

В диапазоне столбцов =F:H находится необходимая нам табличка (=F14:H28) с данными.
Не мало важно сказать, что данные в сводной таблице, каждый день выгружаются с совершенно разным набором строк.
Т.е. Строк в каждой таблице может добавиться/уменьшится на 2-3, а вот в столбцах таблицы останутся на своих местах. Пример:

Вложение 273790

или

Вложение 273789

Как видите перемещается наша таблица (=F14:H28) построчно, но остается в своем диапазоне столбцов =F:H


2. Далее как уже необходимо по заданию. Мы должны вытащить из нашей таблички (=F14:H28) Brend и DISC на необходимые нам даты на следующий лист.

Вложение 273793

слева 21 справа 22.

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

Надеюсь описал процесс понятно Спасибо!

P.s. макрос форумчанина показался мне сложным, не могли бы вы прокомментировать код?

Вложение 273791
0
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
27.05.2013, 22:00
1) На ваш вопрос - ВПР или макрос, мой ответ - макрос.
2) вы показали на вашем примере в файле Excel, что данные копируются с листа Сводная на лист "Выборка" - 1-я дата в столбец В, 2-я дата в столбец М, а их всего 2 даты будет? или дат может быть 50 и копировать их так же нужно через 9 столбцов друг от друга?
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
27.05.2013, 22:04
Если немного изменить структуру исходных данных (см. лист "Данные" здесь использован динамический диапазон - см Диспетчер имен -Data), то можно обойтись сводной таблицей (лист "Свод данных" )
Вложения
Тип файла: xlsx ВПР или Макрос..xlsx (18.9 Кб, 44 просмотров)
0
81 / 24 / 2
Регистрация: 18.01.2013
Сообщений: 74
27.05.2013, 22:08
вот вариант с формулой массива - на листе выборка проставить нужные даты, в исходном листе данные могут находится в диапазоне со 2-й строки до 50-й (либо увеличить диапазон в формуле)
Вложения
Тип файла: xlsx ВПР или Макрос..xlsx (13.5 Кб, 43 просмотров)
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21
27.05.2013, 23:33  [ТС]
Цитата Сообщение от Pavel55 Посмотреть сообщение
1) На ваш вопрос - ВПР или макрос, мой ответ - макрос.
2) вы показали на вашем примере в файле Excel, что данные копируются с листа Сводная на лист "Выборка" - 1-я дата в столбец В, 2-я дата в столбец М, а их всего 2 даты будет? или дат может быть 50 и копировать их так же нужно через 9 столбцов друг от друга?
Только 2 даты. И диапазон из 3 столбцов, где содержится таблица и перемещается по строкам, изменяться не будет.

Добавлено через 10 минут
Цитата Сообщение от toiai Посмотреть сообщение
Если немного изменить структуру исходных данных (см. лист "Данные" здесь использован динамический диапазон - см Диспетчер имен -Data), то можно обойтись сводной таблицей (лист "Свод данных" )
К сожалению в том и сложность задачи, что структуру не нужно менять. А запись данных по датам на другом листке должна происходить в простые таблицы, потому что в будущем они будут тоже использованы для впр, т.е. важно чтобы их диапазоны не пересекались.

Добавлено через 3 минуты
Цитата Сообщение от mcherry Посмотреть сообщение
вот вариант с формулой массива - на листе выборка проставить нужные даты, в исходном листе данные могут находится в диапазоне со 2-й строки до 50-й (либо увеличить диапазон в формуле)
=ЕСЛИОШИБКА(ИНДЕКС(Сводная!G2:G50;НАИМЕН ЬШИЙ(ЕСЛИ($B$1=Сводная!F2:F50;СТРОКА(Сво дная!G2:G50)-1;"");СТРОКА()-2));"")

Не могли бы более подробно разъяснить, данную формулу, я новичек в Excel. c ЕСЛИОШИБКА все понятно. Хотелось бы понимать, что от для чего и откуда. Спасибо! Первый ваш пост прочитал, есть что добавить?

Добавлено через 3 минуты
Цитата Сообщение от Pavel55 Посмотреть сообщение
Потестируй
Очень понравился макрос, не распишите содержимое? переменные мне показались замудреными
0
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
27.05.2013, 23:48
Вот переделал макрос и расписал смысл каждой строчки кода.
Вложения
Тип файла: rar ВПР или Макрос.rar (23.5 Кб, 116 просмотров)
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21
28.05.2013, 00:07  [ТС]
Цитата Сообщение от Pavel55 Посмотреть сообщение
Вот переделал макрос и расписал смысл каждой строчки кода.
Большое спасибо очень наглядно. Мне в самом начале и показалось, что без массивов данных и записи в них не обойдется. Сможете также прокомментировать формулу:

=ЕСЛИОШИБКА(ИНДЕКС(Сводная!G2:G50;НАИМЕН ЬШИЙ(ЕСЛИ($B$1=Сводная!F2:F50;СТРОКА(Сво дная!G2:G50)-1;"");СТРОКА()-2));"")

Почему вы не выбрали ВПР?
0
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
28.05.2013, 00:16
по формулам лучше обрататься к автору формулы.

P.S. По мне лучше макрос, чем формула, допустим у вас будет 10.000 значений. Макрос очень быстро скопирует данные на другой лист, а формула .... она должна постоянно быть записана в ячейках листа, она постоянно будет пересчитываться и "подвешивать" файл, её нужно постоянно контролировать - до какой строки она протянута (вдруг данных больше, чем протянута формула) и т.д. Макрос написал один раз и забыл. Нажал Alt+F8, запустил макрос - результат готов и ничего не "подвешивает" файл.
0
81 / 24 / 2
Регистрация: 18.01.2013
Сообщений: 74
28.05.2013, 10:25
ВПР не выбрала, т.к. он по умолчанию берет только первое найденное значение.
=ЕСЛИОШИБКА(ИНДЕКС(Сводная!G2:G50;НАИМЕН ЬШИЙ(ЕСЛИ($B$1=Сводная!F2:F50;СТРОКА(Сво дная!G2:G50)-1;"");СТРОКА()-2));"")

ИНДЕКС - возвращает значение из исходной таблицы, которое находится на пересечении указанной строки и стобца (столбец у нас один, поэтому мы его дополнительно не указываем), здесь Сводная!G2:G50 - исходная таблица, из которой нам нужно значение;
НАИМЕНЬШИЙ(ЕСЛИ($B$1=Сводная!F2:F50;СТРО КА(Сводная!G2:G50)-1;"");СТРОКА()-2)- возвращает наименьший номер строки, в которой выполняется наше условие:
ЕСЛИ() - проверка нашего условия,
СТРОКА(Сводная!G2:G50)-1 -вернет номер строки (в выбранном диапазоне) в которой это условие выполнилось (все варианты) (минус 1, т.к. 1 первую строку занимает заголовок - чтобы первая строка выбранного диапазона обозначилась как 1-я строка);
СТРОКА()-2 - этот параметр в указывает какой по порядку наименьший номер строки нам нужен (-2, т.к. 2 первые строки листа занимает заголовок)

поскольку это формула массива, то получается что для первой строки, в которой должен быть результат, выводится значение для первого выполнения условия, для второй строки - второе выполнение условия и т.д.
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 21
30.05.2013, 00:33  [ТС]
Большое спасибо ребята, тему можно закрывать. Оба совета научился и буду использовать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.05.2013, 00:33
Помогаю со студенческими работами здесь

Макрос ВПР с перебором множества одинаковых файлов
Добрый день! Очень нужна помощь! Задача следующая: Есть файл-шаблон со столбиками "ИНН", "ЗНАЧЕНИЕ" и много-много...

ГПР или ВПР
подскажите пожалуйста как сделать так чтоб если в ячейке А3 выбрать фамилию с листа "база" подтягивалась должность в ячейке А2

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

Макрос с впр
Добрый день! Вновь надеюсь на вашу помощь! Имеется таблица с данными "РТП 1" из нее нужно удалить значения которые содержатся в трех...

Функция ВПР или СЧЕТЕСЛИ
Помогите создать формулу автоматического подсчета. Возможно ли такое? Файл пример прилагается.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru