Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос для сверки таблиц (VBA) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Макрос для сверки таблиц (VBA)
Ant645 Дата: Воскресенье, 16.02.2020, 08:34 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Добрый день, помогите решить один вопрос. Нужен макрос для сверки таблиц (см. файл). В файле указаны таблицы желтые и синие (для примера взял только по две). Нужен макрос который будет сверять желтые таблицы с синими.
Сверка:
1 - допустим брал "Обозначение 1" F2 находил его в столбце 1 синей таблицы и сравнивал их количество, если количество одинаково то брал обозначение "куда входит 1" H2 находил его в столбце в столбце 2 синей таблицы и сравнивал их количество, если они одинаковы то он находил обозначение из столбца H (которое последнее сверял) в столбце A ( А2) смотрел куда оно входит (С2) находило в 4 синем столбце и сравнивало их количество.

2 - если в этой цепочки попадалось обозначение с разным количеством (но количество выше входящих одинаково) необходимо составление таблицы (см. файл, итог таблица)
В таблице будет указываться обозначение с разным количеством, количество и куда входит (последнее обозначение где заканчивается цепочка проверки для данного обозначения).

обозначения могут повторятся но быть с разной входимостью, необходимо что бы смотрел все варианты.И да обозначения не всегда находятся друг на против друга (необходимо, что бы они искал обозначение по всему столбцу). (Таблицы в рабочей версии не покрашены, покрасил для удобства)
Только ячейка куда входит находится на одной строчке с обозначением (например для обозначения 1 это куда входит 1. а для обозначения 2 куда входит 2)
К сообщению приложен файл: 0652641.xlsx (11.1 Kb)
 
Ответить
СообщениеДобрый день, помогите решить один вопрос. Нужен макрос для сверки таблиц (см. файл). В файле указаны таблицы желтые и синие (для примера взял только по две). Нужен макрос который будет сверять желтые таблицы с синими.
Сверка:
1 - допустим брал "Обозначение 1" F2 находил его в столбце 1 синей таблицы и сравнивал их количество, если количество одинаково то брал обозначение "куда входит 1" H2 находил его в столбце в столбце 2 синей таблицы и сравнивал их количество, если они одинаковы то он находил обозначение из столбца H (которое последнее сверял) в столбце A ( А2) смотрел куда оно входит (С2) находило в 4 синем столбце и сравнивало их количество.

2 - если в этой цепочки попадалось обозначение с разным количеством (но количество выше входящих одинаково) необходимо составление таблицы (см. файл, итог таблица)
В таблице будет указываться обозначение с разным количеством, количество и куда входит (последнее обозначение где заканчивается цепочка проверки для данного обозначения).

обозначения могут повторятся но быть с разной входимостью, необходимо что бы смотрел все варианты.И да обозначения не всегда находятся друг на против друга (необходимо, что бы они искал обозначение по всему столбцу). (Таблицы в рабочей версии не покрашены, покрасил для удобства)
Только ячейка куда входит находится на одной строчке с обозначением (например для обозначения 1 это куда входит 1. а для обозначения 2 куда входит 2)

Автор - Ant645
Дата добавления - 16.02.2020 в 08:34
Kuzmich Дата: Воскресенье, 16.02.2020, 11:57 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 157 ±
Замечаний: 0% ±

Excel 2003
Цитата
1 - допустим брал "Обозначение 1" F2

У вас в строке 1 опечатка 'Обознаяение 1'
Можно использовать Find (для нахождения 'Обозначение 1' в синей таблице)
и циклы по строкам в найденном столбце.
Какой конкретно вопрос не получается, а то написанное вами смахивает на ТЗ.
 
Ответить
Сообщение
Цитата
1 - допустим брал "Обозначение 1" F2

У вас в строке 1 опечатка 'Обознаяение 1'
Можно использовать Find (для нахождения 'Обозначение 1' в синей таблице)
и циклы по строкам в найденном столбце.
Какой конкретно вопрос не получается, а то написанное вами смахивает на ТЗ.

Автор - Kuzmich
Дата добавления - 16.02.2020 в 11:57
Ant645 Дата: Воскресенье, 16.02.2020, 12:19 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Kuzmich,
Здравствуйте!
Возможно я те точно написал. Я имел ввиду что я взял число в ячейке F2 в столбце "обозначение 1". Суть такая что значение в F2 входит в число ячейки H2, потом число из ячейки H2 расположено в столбце А (например А2), и данное число входит в число расположенное в столбце С (например С2). Но одно значение может входить в несколько других значений (например в столбце А. число 11 входит и в 122 и в 543).
Я только пытаюсь разбираться в макросах, и я не могу пока написать его(
 
Ответить
СообщениеKuzmich,
Здравствуйте!
Возможно я те точно написал. Я имел ввиду что я взял число в ячейке F2 в столбце "обозначение 1". Суть такая что значение в F2 входит в число ячейки H2, потом число из ячейки H2 расположено в столбце А (например А2), и данное число входит в число расположенное в столбце С (например С2). Но одно значение может входить в несколько других значений (например в столбце А. число 11 входит и в 122 и в 543).
Я только пытаюсь разбираться в макросах, и я не могу пока написать его(

Автор - Ant645
Дата добавления - 16.02.2020 в 12:19
Kuzmich Дата: Воскресенье, 16.02.2020, 13:03 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 157 ±
Замечаний: 0% ±

Excel 2003
Цитата
я взял число в ячейке F2 в столбце "обозначение 1".

[vba]
Код
Set iОбозначение1 = Range("F2")
[/vba]
Цитата
потом число из ячейки H2 расположено в столбце А (например А2)

[vba]
Код
Set iКудаВходит1 = Columns("A").Find(iОбозначение1.Offset(, 2), , xlValues, xlWhole)
[/vba]
Цитата
данное число входит в число расположенное в столбце С (например С2)

[vba]
Код
Set iКудаВходит2 = iКудаВходит1.Offset(, 2)
[/vba]
[vba]
Код
Sub NA()
Dim i As Long
Dim iLastRow As Long
Dim iКудаВходит1 As Range
Dim iКудаВходит2 As Range
Dim iОбозначение1 As Range
Dim FAdr As String
   iLastRow = Cells(Rows.Count, "B").End(xlUp).Row
    Set iОбозначение1 = Range("F2")
      'ищем в столбце А значение из столбца Н
    Set iКудаВходит1 = Columns("A").Find(iОбозначение1.Offset(, 2), , xlValues, xlWhole)
     If Not iКудаВходит1 Is Nothing Then
        FAdr = iКудаВходит1.Address 'адрес первого вхождения
      Do
       Set iКудаВходит2 = iКудаВходит1.Offset(, 2)
       'ищем дальше по столбцу А, есть лиеще вхождение?
       Set iКудаВходит1 = Columns("A").FindNext(iКудаВходит1)
      Loop While iКудаВходит1.Address <> FAdr
     End If
End Sub
[/vba]
Пример кода нахождения вхождений. Попробуйте разобраться.
 
Ответить
Сообщение
Цитата
я взял число в ячейке F2 в столбце "обозначение 1".

[vba]
Код
Set iОбозначение1 = Range("F2")
[/vba]
Цитата
потом число из ячейки H2 расположено в столбце А (например А2)

[vba]
Код
Set iКудаВходит1 = Columns("A").Find(iОбозначение1.Offset(, 2), , xlValues, xlWhole)
[/vba]
Цитата
данное число входит в число расположенное в столбце С (например С2)

[vba]
Код
Set iКудаВходит2 = iКудаВходит1.Offset(, 2)
[/vba]
[vba]
Код
Sub NA()
Dim i As Long
Dim iLastRow As Long
Dim iКудаВходит1 As Range
Dim iКудаВходит2 As Range
Dim iОбозначение1 As Range
Dim FAdr As String
   iLastRow = Cells(Rows.Count, "B").End(xlUp).Row
    Set iОбозначение1 = Range("F2")
      'ищем в столбце А значение из столбца Н
    Set iКудаВходит1 = Columns("A").Find(iОбозначение1.Offset(, 2), , xlValues, xlWhole)
     If Not iКудаВходит1 Is Nothing Then
        FAdr = iКудаВходит1.Address 'адрес первого вхождения
      Do
       Set iКудаВходит2 = iКудаВходит1.Offset(, 2)
       'ищем дальше по столбцу А, есть лиеще вхождение?
       Set iКудаВходит1 = Columns("A").FindNext(iКудаВходит1)
      Loop While iКудаВходит1.Address <> FAdr
     End If
End Sub
[/vba]
Пример кода нахождения вхождений. Попробуйте разобраться.

Автор - Kuzmich
Дата добавления - 16.02.2020 в 13:03
Ant645 Дата: Воскресенье, 16.02.2020, 13:42 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
это вы описали как работает принцип нахождения куда входит.
Но самое сложное что необходимо что бы он делал сравнения на каждом уровне количества с синей таблицей. Выстраивал цепочку и каждый этап сравнивал их количество.

например

обозначение (кол)
1 ( 1 ) - 44 ( 7 ) - 133 ( 4 ) синяя таблица

1 ( 1 ) - 44 ( 2 ) - 133 ( 4 ) желтая таблица

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

у 44 разное количество. а у 133 нет, а должно быть у 133 разное количество так как у нижних чисел разное. и выдавал в отдельные ячейки итог с желтой и синей таблицы где различия
 
Ответить
Сообщениеэто вы описали как работает принцип нахождения куда входит.
Но самое сложное что необходимо что бы он делал сравнения на каждом уровне количества с синей таблицей. Выстраивал цепочку и каждый этап сравнивал их количество.

например

обозначение (кол)
1 ( 1 ) - 44 ( 7 ) - 133 ( 4 ) синяя таблица

1 ( 1 ) - 44 ( 2 ) - 133 ( 4 ) желтая таблица

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

у 44 разное количество. а у 133 нет, а должно быть у 133 разное количество так как у нижних чисел разное. и выдавал в отдельные ячейки итог с желтой и синей таблицы где различия

Автор - Ant645
Дата добавления - 16.02.2020 в 13:42
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!