0 / 0 / 1
Регистрация: 06.08.2015
Сообщений: 35
1

Перенос повторяющихся строк двух листов на 3 лист

05.08.2022, 19:27. Показов 569. Ответов 8
Метки нет (Все метки)

День добрый. Есть следующее задание.
Не могу реализовать удаление пустых строк. А может есть и более лаконичный вариант решения.
Буду рад помощи.

В прилагаемом файле электронной таблицы Excel имеются два листа с данными. На первом листе представлена таблица, содержащая пронумерованный список текстовых полей с соответствующими цифровыми значениями.
На втором листе находится другой список текстовых полей, содержимое которых включает в себя значения из текстовых полей первой таблицы (не всех).
Создайте на 3 листе таблицу, включающую в себя строки из 1 таблицы, с условием, что значение каждого текстового поля полученной таблицы соответствует (контекстно включено для файла Книга2.xls) одному из множества полей второй таблицы (в итоговой таблице необходимо убрать из первой таблицы строки, не содержащиеся во второй таблице).

Книга1.xls
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2022, 19:27
Ответы с готовыми решениями:

Копирование строк по условию с нескольких листов на отдельный лист
Уважаемые знатоки-форумчане! Прошу помощи! Просмотрела все возможные форумы, сайты по теме, не...

Копирование строк excel по условию, с нескольких листов на отдельный лист
Имеется файл , в котором ведётся учёт проверки/поверки средств измерения , необходимо , при...

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

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

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

8
221 / 127 / 52
Регистрация: 16.07.2020
Сообщений: 384
05.08.2022, 20:46 2
DenisWinter, Не очень понятен термин "лаконичный", можно сделать короткий код или быстрый. Быстрый будет намного длиннее короткого. Так что поясните.
0
0 / 0 / 1
Регистрация: 06.08.2015
Сообщений: 35
06.08.2022, 01:15  [ТС] 3
В любом случае, каким бы не был способ решения, было бы неплохо его увидеть)
В прикрепленном файле есть мои попытки что-то сделать. Но решить проблему с повторами/пустыми ячейками мне не удалось
0
221 / 127 / 52
Регистрация: 16.07.2020
Сообщений: 384
06.08.2022, 10:54 4
DenisWinter, Попробуйте вариант без макросов. Для ячейки B2 на листе 3 формула
Код
=ЕСЛИОШИБКА(ИНДЕКС(Лист1!$B$2:$B$664;НАИМЕНЬШИЙ(ЕСЛИ(НЕ(ЕНД(ПОИСКПОЗ(Лист1!$B$2:$B$664;Лист2!$B$1:$B$9910;0)));СТРОКА($A$1:$A$663));СТРОКА(A1)));"")
формула массива, вводится Ctrl+Shift+Enter.
Для ячейки C2 -
Код
=ЕСЛИОШИБКА(ВПР(B2;Лист1!$B$2:$C$664;2;0);"")
Первая формула медленная, считает достаточно долго. Возможно придется подтолкнуть кнопкой F9.
0
5846 / 3086 / 669
Регистрация: 23.11.2010
Сообщений: 10,320
06.08.2022, 11:51 5
Может проще формулой вывести наличие Наименования во второй таблице, отфильтровать по ИСТИНЕ и скопировать полученное на третий лист.
0
221 / 127 / 52
Регистрация: 16.07.2020
Сообщений: 384
06.08.2022, 12:09 6
Лучший ответ Сообщение было отмечено DenisWinter как решение

Решение

Вариант с быстрым макросом.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Lst()
  Dim Ar1(), Ar2()
  Dim i As Long, j As Long
  Dim Dk As Object
  Set Dk = CreateObject("Scripting.Dictionary")
  With Worksheets("Лист1")
      For i = 2 To .Cells(Rows.Count, 2).End(xlUp).Row
         Dk.Add .Cells(i, 2).Value, .Cells(i, 3).Value
      Next
  End With
  Ar1 = Worksheets("Лист2").Range("B1:B9910").Value
  j = 1
  ReDim Ar2(1 To 700, 1 To 2)
  For i = 1 To UBound(Ar1)
       If Dk.Exists(Ar1(i, 1)) Then
           Ar2(j, 1) = Ar1(i, 1)
           Ar2(j, 2) = Dk.Item(Ar1(i, 1))
           j = j + 1
        End If
   Next
 Worksheets("Лист3").Range("B2:C" & UBound(Ar2) + 1).Value = Ar2
End Sub
1
0 / 0 / 1
Регистрация: 06.08.2015
Сообщений: 35
06.08.2022, 21:45  [ТС] 7
AlexOld, макрос сработал (как будто это должно было удивить). Спасибо тебе огромное.
Могу с еще одним экселем попросить помочь? С макросами не бум-бум, но твой разбираю сейчас потихоньку.
Тут уже немножко посложнее второй лист.
Вложения
Тип файла: xlsx Книга2.xlsx (263.2 Кб, 6 просмотров)
0
Fairuza
07.08.2022, 08:38
  #8

Не по теме:

На форуме принято обращение на "вы", если это не ваш закадычный друг

0
221 / 127 / 52
Регистрация: 16.07.2020
Сообщений: 384
07.08.2022, 11:00 9
DenisWinter, Почти то же самое
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Lst2()
  Dim Ar1(), Ar2()
  Dim Ar3() As String
  Dim i As Long, j As Long
  Dim Dk As Object
  Set Dk = CreateObject("Scripting.Dictionary")
  With Worksheets("Лист1")
      For i = 2 To .Cells(Rows.Count, 2).End(xlUp).Row
         Dk.Add .Cells(i, 2).Value, .Cells(i, 3).Value
      Next
  End With
  Ar1 = Worksheets("Лист2").Range("B1:B9909").Value
  j = 1
  ReDim Ar2(1 To 700, 1 To 2)
  For i = 1 To UBound(Ar1)
       Ar3 = Split(Ar1(i, 1))
       If Dk.Exists(Ar3(3)) Then
           Ar2(j, 1) = Ar3(3)
           Ar2(j, 2) = Dk.Item(Ar3(3))
           j = j + 1
        End If
   Next
 Worksheets("Лист3").Range("B2:C" & UBound(Ar2) + 1).Value = Ar2
End Sub
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2022, 11:00
Помогаю со студенческими работами здесь

Перенос строк на другой лист
Добрый день! Возникла такая ситуация, нужно из одного листа, перенести данные в другой лист, там у...

Перенос строк на другой лист
Помогите с макросом для переноса строк на другой лист. Есть 3 листа: "Зарплата","Смены","Архив"....

Перенос строк на отдельный лист
Добрый вечер! Помогите, решить задачу! Есть файл exel, в котором более 10т.ч строк В ячейках...

Перенос строк на другой лист по возрасту
Добрый день! Возникла такая ситуация, нужно из листа "юноши" и "девушки", перенести строки в...

Перенос строк на другой лист двойным щелчком
Здравствуйте. Нашел вот такую команду Private Sub Worksheet_BeforeDoubleClick(ByVal Target As...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru