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

Вход

Регистрация

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

 

= Мир MS Excel/Выгрузка данных по 2 критериям на новый лист - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выгрузка данных по 2 критериям на новый лист (Формулы/Formulas)
Выгрузка данных по 2 критериям на новый лист
lyksor25 Дата: Вторник, 12.01.2016, 12:20 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
У меня следующая проблема, которую ни как не могу решить: имеется некий долгосрочный план работ нескольких сотрудников на нескольких листах. Необходимо проводить выгрузку информации из всех листов (их 5-10) на новый лист с фильтрацией по фамилии сотрудника и промежутку работ (в течении месяца). Предполагаю, что это можно сделать через макросы, но я в этом не разбираюсь совсем.
Спасибо
К сообщению приложен файл: 3578732.xlsx (14.8 Kb)
 
Ответить
СообщениеДобрый день!
У меня следующая проблема, которую ни как не могу решить: имеется некий долгосрочный план работ нескольких сотрудников на нескольких листах. Необходимо проводить выгрузку информации из всех листов (их 5-10) на новый лист с фильтрацией по фамилии сотрудника и промежутку работ (в течении месяца). Предполагаю, что это можно сделать через макросы, но я в этом не разбираюсь совсем.
Спасибо

Автор - lyksor25
Дата добавления - 12.01.2016 в 12:20
китин Дата: Вторник, 12.01.2016, 12:24 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
[offtop]
что это можно сделать через макросы
.
а вопрос в разделе Вопросы по Excel :'( :'( :'(


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение[offtop]
что это можно сделать через макросы
.
а вопрос в разделе Вопросы по Excel :'( :'( :'(

Автор - китин
Дата добавления - 12.01.2016 в 12:24
lyksor25 Дата: Вторник, 12.01.2016, 12:40 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Может кто-то предложит решить проблему без макросов, если нет - пойду в раздел VBA.
[moder]Не нужно никуда ходить. Решайте вопрос здесь


Сообщение отредактировал _Boroda_ - Вторник, 12.01.2016, 12:43
 
Ответить
СообщениеМожет кто-то предложит решить проблему без макросов, если нет - пойду в раздел VBA.
[moder]Не нужно никуда ходить. Решайте вопрос здесь

Автор - lyksor25
Дата добавления - 12.01.2016 в 12:40
abtextime Дата: Вторник, 12.01.2016, 12:44 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
[offtop]Я, конечно, дико извиняюсь, а можно вопрос: многолистовая структура книги (да еще и с переменным количеством листов, как я понял) - это "священная корова"? Просто так достали на работе эти 100-листовые книги, доставшиеся в "наследство", что как красная тряпка просто ...

Плоская структура, "умные" и сводные таблицы - рулят ...

А так, макросами решается на 100%, формулами - мэйби, но не уверен

Сорри за оффтоп
 
Ответить
Сообщение[offtop]Я, конечно, дико извиняюсь, а можно вопрос: многолистовая структура книги (да еще и с переменным количеством листов, как я понял) - это "священная корова"? Просто так достали на работе эти 100-листовые книги, доставшиеся в "наследство", что как красная тряпка просто ...

Плоская структура, "умные" и сводные таблицы - рулят ...

А так, макросами решается на 100%, формулами - мэйби, но не уверен

Сорри за оффтоп

Автор - abtextime
Дата добавления - 12.01.2016 в 12:44
lyksor25 Дата: Вторник, 12.01.2016, 15:27 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо, а можно по подробнее, как именно эти формулы использовать?
[moder]Какие "эти"?


Сообщение отредактировал _Boroda_ - Вторник, 12.01.2016, 15:36
 
Ответить
СообщениеСпасибо, а можно по подробнее, как именно эти формулы использовать?
[moder]Какие "эти"?

Автор - lyksor25
Дата добавления - 12.01.2016 в 15:27
abtextime Дата: Вторник, 12.01.2016, 15:45 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
lyksor25,
тут важный нюанс - если Вас устроит вариант, допустим, для трех листов/разделов, то это можно на формулах ... но тогда при добавлении раздела придется кое-что править ...
... если же для произвольного количества листов, с возможностью их добавления, писать формулы - это уже другого уровня задача ... лично для меня - никак не вариант для "доброго совета" в паузе от рабочего процесса ... если только наиболее опытные экселисты справятся с ней без труда (на формулах) ... и такую задачу, конечно, целесообразнее решать макросами ...
... попробуйте определиться
 
Ответить
Сообщениеlyksor25,
тут важный нюанс - если Вас устроит вариант, допустим, для трех листов/разделов, то это можно на формулах ... но тогда при добавлении раздела придется кое-что править ...
... если же для произвольного количества листов, с возможностью их добавления, писать формулы - это уже другого уровня задача ... лично для меня - никак не вариант для "доброго совета" в паузе от рабочего процесса ... если только наиболее опытные экселисты справятся с ней без труда (на формулах) ... и такую задачу, конечно, целесообразнее решать макросами ...
... попробуйте определиться

Автор - abtextime
Дата добавления - 12.01.2016 в 15:45
sv2014 Дата: Вторник, 12.01.2016, 15:50 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lyksor25, добрый день,вот макрос с выгрузкой данных на лист Лист1(его надо добавить в книгу)
,-в файл примере,кнопка yyy на листе 1(надо сжать, загружу чуть позже),вызов макроса с Вашего листа 1.

[vba]
Код
Sub yyy()
    Dim z(), i&, i1&, i2&, j&, m&
    i1 = Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("1").Range("A1:G" & i1).Value
    m = 3
    For i = 2 To UBound(z)
         If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
         m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
         End If
   Next
  Sheets("Лист1").Range("A1").Resize(m, UBound(z, 2)).Value = z
  Sheets("Лист1").Columns("A:G").AutoFit
  Sheets("Лист1").Range("A3:G3").Merge
  i1 = Sheets("2").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("2").Range("A3:G" & i1).Value
    m = 1
    For i = 2 To UBound(z)
         If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
         m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
         End If
   Next
  i2 = Sheets("Лист1").Range("A" & Range("A1").End(xlDown).Row).End(xlDown).Row - 1
  Sheets("Лист1").Range("A" & i2).Resize(m, UBound(z, 2)).Value = z
  Sheets("Лист1").Range("A6:G6").Merge
End Sub
[/vba]
К сообщению приложен файл: example_12_01_2.xls (60.5 Kb)
 
Ответить
Сообщениеlyksor25, добрый день,вот макрос с выгрузкой данных на лист Лист1(его надо добавить в книгу)
,-в файл примере,кнопка yyy на листе 1(надо сжать, загружу чуть позже),вызов макроса с Вашего листа 1.

[vba]
Код
Sub yyy()
    Dim z(), i&, i1&, i2&, j&, m&
    i1 = Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("1").Range("A1:G" & i1).Value
    m = 3
    For i = 2 To UBound(z)
         If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
         m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
         End If
   Next
  Sheets("Лист1").Range("A1").Resize(m, UBound(z, 2)).Value = z
  Sheets("Лист1").Columns("A:G").AutoFit
  Sheets("Лист1").Range("A3:G3").Merge
  i1 = Sheets("2").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("2").Range("A3:G" & i1).Value
    m = 1
    For i = 2 To UBound(z)
         If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
         m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
         End If
   Next
  i2 = Sheets("Лист1").Range("A" & Range("A1").End(xlDown).Row).End(xlDown).Row - 1
  Sheets("Лист1").Range("A" & i2).Resize(m, UBound(z, 2)).Value = z
  Sheets("Лист1").Range("A6:G6").Merge
End Sub
[/vba]

Автор - sv2014
Дата добавления - 12.01.2016 в 15:50
sv2014 Дата: Вторник, 12.01.2016, 16:02 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lyksor25, добавляю файл-пример,используйте ,например,WinRaR,кнопка yyy
К сообщению приложен файл: example_12_01_2.rar (13.6 Kb)
 
Ответить
Сообщениеlyksor25, добавляю файл-пример,используйте ,например,WinRaR,кнопка yyy

Автор - sv2014
Дата добавления - 12.01.2016 в 16:02
sv2014 Дата: Вторник, 12.01.2016, 16:21 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lyksor25, повторно,загружаю файл что то исказилось до этого при копировании, макрос в файле,
кнопка yyy для тестирования
К сообщению приложен файл: 4614090.rar (12.4 Kb)
 
Ответить
Сообщениеlyksor25, повторно,загружаю файл что то исказилось до этого при копировании, макрос в файле,
кнопка yyy для тестирования

Автор - sv2014
Дата добавления - 12.01.2016 в 16:21
sv2014 Дата: Вторник, 12.01.2016, 18:59 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lyksor25, добавляю макрос,с выгрузкой на лист "Итоговый лист, так должно быть",кнопка yyy

[vba]
Код
Sub yyy()
Dim z(), i&, i1&, i2&, j&, m&
    i1 = Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("1").Range("A1:G" & i1).Value: m = 3
    For i = 2 To UBound(z)
         If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
         m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
         End If
   Next
Sheets(Итоговый лист, так должно быть").Range("A1").Resize(m, UBound(z, 2)).Value = z
  Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
  Sheets("Итоговый лист, так должно быть").Range("A3:G3").Merge
  i1 = Sheets("2").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("2").Range("A3:G" & i1).Value:   m = 1
    For i = 2 To UBound(z)
         If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
         m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
         End If
   Next
   i2 = Sheets("Итоговый лист, так должно быть").Range("A" & Range("A1").End(xlDown).Row).End(xlDown).Row + 1
Sheets("Итоговый лист, так должно быть").Range("A" & i2).Resize(m, UBound(z, 2)).Value = z
   Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
  Sheets("Итоговый лист, так должно быть").Range("A" & i2 & ":G" & i2).Merge
    End Sub
[/vba]
К сообщению приложен файл: 9944394.rar (13.7 Kb)
 
Ответить
Сообщениеlyksor25, добавляю макрос,с выгрузкой на лист "Итоговый лист, так должно быть",кнопка yyy

[vba]
Код
Sub yyy()
Dim z(), i&, i1&, i2&, j&, m&
    i1 = Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("1").Range("A1:G" & i1).Value: m = 3
    For i = 2 To UBound(z)
         If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
         m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
         End If
   Next
Sheets(Итоговый лист, так должно быть").Range("A1").Resize(m, UBound(z, 2)).Value = z
  Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
  Sheets("Итоговый лист, так должно быть").Range("A3:G3").Merge
  i1 = Sheets("2").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("2").Range("A3:G" & i1).Value:   m = 1
    For i = 2 To UBound(z)
         If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
         m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
         End If
   Next
   i2 = Sheets("Итоговый лист, так должно быть").Range("A" & Range("A1").End(xlDown).Row).End(xlDown).Row + 1
Sheets("Итоговый лист, так должно быть").Range("A" & i2).Resize(m, UBound(z, 2)).Value = z
   Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
  Sheets("Итоговый лист, так должно быть").Range("A" & i2 & ":G" & i2).Merge
    End Sub
[/vba]

Автор - sv2014
Дата добавления - 12.01.2016 в 18:59
lyksor25 Дата: Среда, 13.01.2016, 08:09 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
sv2014, спасибо большое за помощь, но я пока не совсем разобрался, появилось несколько вопросов. Вот исходный код макроса:

[vba]
Код
Sub yyy()
Dim z(), i&, i1&, i2&, j&, m&
i1 = Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
z = Sheets("1").Range("A1:G" & i1).Value: m = 3
For i = 2 To UBound(z)
If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
End If
Next
Sheets(Итоговый лист, так должно быть").Range("A1").Resize(m, UBound(z, 2)).Value = z
Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
Sheets("Итоговый лист, так должно быть").Range("A3:G3").Merge
i1 = Sheets("2").Range("A" & Rows.Count).End(xlUp).Row
z = Sheets("2").Range("A3:G" & i1).Value: m = 1
For i = 2 To UBound(z)
If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
End If
Next
i2 = Sheets("Итоговый лист, так должно быть").Range("A" & Range("A1").End(xlDown).Row).End(xlDown).Row + 1
Sheets("Итоговый лист, так должно быть").Range("A" & i2).Resize(m, UBound(z, 2)).Value = z
Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
Sheets("Итоговый лист, так должно быть").Range("A" & i2 & ":G" & i2).Merge
End Sub
[/vba]

1) в какой строке меняется временной промежуток, например на промежуток январь-февраль?
2) у меня имеется больше количество вкладок - 12, как это учесть ?
3) количество столбцов в моей рабочей таблице не много больше, до буквы "L".

Буду ждать от Вас помощи)
Спасибо большое!!!
[moder]Оформляйте коды тегами (кнопка #)[/moder]


Сообщение отредактировал Pelena - Среда, 13.01.2016, 08:41
 
Ответить
Сообщениеsv2014, спасибо большое за помощь, но я пока не совсем разобрался, появилось несколько вопросов. Вот исходный код макроса:

[vba]
Код
Sub yyy()
Dim z(), i&, i1&, i2&, j&, m&
i1 = Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
z = Sheets("1").Range("A1:G" & i1).Value: m = 3
For i = 2 To UBound(z)
If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
End If
Next
Sheets(Итоговый лист, так должно быть").Range("A1").Resize(m, UBound(z, 2)).Value = z
Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
Sheets("Итоговый лист, так должно быть").Range("A3:G3").Merge
i1 = Sheets("2").Range("A" & Rows.Count).End(xlUp).Row
z = Sheets("2").Range("A3:G" & i1).Value: m = 1
For i = 2 To UBound(z)
If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And InStrRev(z(i, 5), "12") Then
m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
End If
Next
i2 = Sheets("Итоговый лист, так должно быть").Range("A" & Range("A1").End(xlDown).Row).End(xlDown).Row + 1
Sheets("Итоговый лист, так должно быть").Range("A" & i2).Resize(m, UBound(z, 2)).Value = z
Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
Sheets("Итоговый лист, так должно быть").Range("A" & i2 & ":G" & i2).Merge
End Sub
[/vba]

1) в какой строке меняется временной промежуток, например на промежуток январь-февраль?
2) у меня имеется больше количество вкладок - 12, как это учесть ?
3) количество столбцов в моей рабочей таблице не много больше, до буквы "L".

Буду ждать от Вас помощи)
Спасибо большое!!!
[moder]Оформляйте коды тегами (кнопка #)[/moder]

Автор - lyksor25
Дата добавления - 13.01.2016 в 08:09
sv2014 Дата: Среда, 13.01.2016, 09:41 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lyksor25, добрый день,выложите уточненный полный файл-пример со всеми столбцами и вкладками на январь-февраль,например сжать можно.Для перехода на январь-февраль с ноября-декабрь, поменяйте в функции InStrRev(в двух обращениях,строки5, 6 и16,17) 11 на 1,а 12 соответственно на 2.Попробуйте ,для изменения диапазона, поменять в Z(третья строка),соответственно G на L


Сообщение отредактировал sv2014 - Среда, 13.01.2016, 09:42
 
Ответить
Сообщениеlyksor25, добрый день,выложите уточненный полный файл-пример со всеми столбцами и вкладками на январь-февраль,например сжать можно.Для перехода на январь-февраль с ноября-декабрь, поменяйте в функции InStrRev(в двух обращениях,строки5, 6 и16,17) 11 на 1,а 12 соответственно на 2.Попробуйте ,для изменения диапазона, поменять в Z(третья строка),соответственно G на L

Автор - sv2014
Дата добавления - 13.01.2016 в 09:41
lyksor25 Дата: Среда, 13.01.2016, 10:50 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
sv2014, ваши советы учел, макрос начал работать, все выгружает, осталось 2 проблемы:
1) при выгрузке нет расширения до 12 вкладок - работает только с вкладками "1" и "2". Как это расширить?
2) при обработке первого раздела выгружает только 2 задачи, потом все отсекается следующим разделом, можно ли сделать этот показатель "плавающим" Прикладываю пример того, что макрос делает и что делать должен.
Спасибо за помощь!
К сообщению приложен файл: _3578732.xlsx (16.5 Kb)
 
Ответить
Сообщениеsv2014, ваши советы учел, макрос начал работать, все выгружает, осталось 2 проблемы:
1) при выгрузке нет расширения до 12 вкладок - работает только с вкладками "1" и "2". Как это расширить?
2) при обработке первого раздела выгружает только 2 задачи, потом все отсекается следующим разделом, можно ли сделать этот показатель "плавающим" Прикладываю пример того, что макрос делает и что делать должен.
Спасибо за помощь!

Автор - lyksor25
Дата добавления - 13.01.2016 в 10:50
sv2014 Дата: Четверг, 14.01.2016, 10:06 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lyksor25, добрый день,только прочитал,Ваш ответ,(вчера был занят на работе),постараюсь сделать уточненный файл
сегодня-завтра(будет посвободнее),возник вопрос к выходным результатам нового файл примера-,почему еще строка
5 задача 5 16.11.2015 15.12.2015 не вошла в желаемый результат(хотя, первый столбец ноябрь,второй декабрь)
 
Ответить
Сообщениеlyksor25, добрый день,только прочитал,Ваш ответ,(вчера был занят на работе),постараюсь сделать уточненный файл
сегодня-завтра(будет посвободнее),возник вопрос к выходным результатам нового файл примера-,почему еще строка
5 задача 5 16.11.2015 15.12.2015 не вошла в желаемый результат(хотя, первый столбец ноябрь,второй декабрь)

Автор - sv2014
Дата добавления - 14.01.2016 в 10:06
lyksor25 Дата: Четверг, 14.01.2016, 11:01 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
sv2014, Прошу прощения, это я ошибся - она тоже входит.
 
Ответить
Сообщениеsv2014, Прошу прощения, это я ошибся - она тоже входит.

Автор - lyksor25
Дата добавления - 14.01.2016 в 11:01
lyksor25 Дата: Четверг, 14.01.2016, 13:40 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Уже в большей части кода разобрался, остался только один вопрос - как начать вставлять данные из следующего раздела, сразу после окончания предыдущего. Сейчас сделал только начала написания новой части только с точной ячейки:
[vba]
Код

i1 = Sheets("2").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("2").Range("A3:L" & i1).Value
    m = 1
    For i = 2 To UBound(z)
        If z(i, 10) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11") Or InStrRev(z(i, 6), "12") Or InStrRev(z(i, 6), "11") Or InStrRev(z(i, 7), "11") Or InStrRev(z(i, 7), "12")) Then
       m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
       End If
Next
Sheets("Лист1").Range("A20").Resize(m, UBound(z, 2)).Value = z
Sheets("Лист1").Columns("A:L").AutoFit
Sheets("Лист1").Range("A3:L3").Merge
[/vba]

Я задаю точное значение в команде Range("A20") и макрос начинает писать с 20 строки новый цикл. Как можно это поправить?


Сообщение отредактировал lyksor25 - Четверг, 14.01.2016, 13:41
 
Ответить
СообщениеУже в большей части кода разобрался, остался только один вопрос - как начать вставлять данные из следующего раздела, сразу после окончания предыдущего. Сейчас сделал только начала написания новой части только с точной ячейки:
[vba]
Код

i1 = Sheets("2").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("2").Range("A3:L" & i1).Value
    m = 1
    For i = 2 To UBound(z)
        If z(i, 10) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11") Or InStrRev(z(i, 6), "12") Or InStrRev(z(i, 6), "11") Or InStrRev(z(i, 7), "11") Or InStrRev(z(i, 7), "12")) Then
       m = m + 1: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
       End If
Next
Sheets("Лист1").Range("A20").Resize(m, UBound(z, 2)).Value = z
Sheets("Лист1").Columns("A:L").AutoFit
Sheets("Лист1").Range("A3:L3").Merge
[/vba]

Я задаю точное значение в команде Range("A20") и макрос начинает писать с 20 строки новый цикл. Как можно это поправить?

Автор - lyksor25
Дата добавления - 14.01.2016 в 13:40
sv2014 Дата: Четверг, 14.01.2016, 19:28 | Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lyksor25, добрый вечер,макрос yyy9 для трех вкладок(n=3),можно менять значение n
Макрос yyy8 копирует на Лист2,есть кнопки на Листе 2,удалить формат,установить формат.

[vba]
Код
Sub yyy9()
Dim z(), i&, i1&, i2&, j&, m&, k&, n&
n = 3
    i1 = Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("1").Range("A1:G" & i1).Value
    ReDim z1(1 To n * UBound(z), 1 To UBound(z, 2))
    For i = 1 To 3
    For j = 1 To UBound(z, 2): z1(i, j) = z(i, j): Next
    Next
    m = 3
    For i = 2 To UBound(z)
    If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And (InStrRev(z(i, 5), "12") Or InStrRev(z(i, 5), "11")) Then
         m = m + 1: For j = 1 To UBound(z, 2): z1(m, j) = z(i, j): Next
         End If
   Next
   For k = 2 To n
  i1 = Sheets(k).Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets(k).Range("A3:G" & i1).Value
    For j = 1 To UBound(z, 2): z1(m + 1, j) = z(1, j): Next
    m = m + 1
   For j = 1 To UBound(z, 2): z1(m + 1, j) = z(1, j): Next
    For i = 2 To UBound(z)
If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And (InStrRev(z(i, 5), "12") Or InStrRev(z(i, 5), "11")) Then
         m = m + 1: For j = 1 To UBound(z, 2): z1(m, j) = z(i, j): Next
         End If
   Next
Next
Sheets("Итоговый лист, так должно быть").Range("A1").Resize(m, UBound(z1, 2)).Value = z1
  Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
    End Sub
[/vba]
К сообщению приложен файл: example-14_01_2.rar (17.2 Kb)
 
Ответить
Сообщениеlyksor25, добрый вечер,макрос yyy9 для трех вкладок(n=3),можно менять значение n
Макрос yyy8 копирует на Лист2,есть кнопки на Листе 2,удалить формат,установить формат.

[vba]
Код
Sub yyy9()
Dim z(), i&, i1&, i2&, j&, m&, k&, n&
n = 3
    i1 = Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets("1").Range("A1:G" & i1).Value
    ReDim z1(1 To n * UBound(z), 1 To UBound(z, 2))
    For i = 1 To 3
    For j = 1 To UBound(z, 2): z1(i, j) = z(i, j): Next
    Next
    m = 3
    For i = 2 To UBound(z)
    If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And (InStrRev(z(i, 5), "12") Or InStrRev(z(i, 5), "11")) Then
         m = m + 1: For j = 1 To UBound(z, 2): z1(m, j) = z(i, j): Next
         End If
   Next
   For k = 2 To n
  i1 = Sheets(k).Range("A" & Rows.Count).End(xlUp).Row
    z = Sheets(k).Range("A3:G" & i1).Value
    For j = 1 To UBound(z, 2): z1(m + 1, j) = z(1, j): Next
    m = m + 1
   For j = 1 To UBound(z, 2): z1(m + 1, j) = z(1, j): Next
    For i = 2 To UBound(z)
If z(i, 7) = "Иванов" And (InStrRev(z(i, 3), "12") Or InStrRev(z(i, 3), "11")) And (InStrRev(z(i, 5), "12") Or InStrRev(z(i, 5), "11")) Then
         m = m + 1: For j = 1 To UBound(z, 2): z1(m, j) = z(i, j): Next
         End If
   Next
Next
Sheets("Итоговый лист, так должно быть").Range("A1").Resize(m, UBound(z1, 2)).Value = z1
  Sheets("Итоговый лист, так должно быть").Columns("A:G").AutoFit
    End Sub
[/vba]

Автор - sv2014
Дата добавления - 14.01.2016 в 19:28
sv2014 Дата: Четверг, 14.01.2016, 19:53 | Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
lyksor25, добавлю,при тестировании макроса yyy8 на листе Лист2,очищайте вручную все начиная со строки 4( не установил кнопку очистки на листе Лист2),
строки 1:3 на листе Лист2 не трогайте,-кнопка установить формат,использует форматирование третьей строки.
 
Ответить
Сообщениеlyksor25, добавлю,при тестировании макроса yyy8 на листе Лист2,очищайте вручную все начиная со строки 4( не установил кнопку очистки на листе Лист2),
строки 1:3 на листе Лист2 не трогайте,-кнопка установить формат,использует форматирование третьей строки.

Автор - sv2014
Дата добавления - 14.01.2016 в 19:53
lyksor25 Дата: Четверг, 14.01.2016, 23:49 | Сообщение № 19
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
sv2014, Вот теперь все отлично просто, только остался мааааленький недочет, я его упустил первоначально из вида - при поиске строк содержащих критерий "Иванов" можно ли сделать так, чтобы макрос искал не только точное значение, но и учитывал такие значения как, например, "Иванов П." или "Иванов И.С." и т.д., т.е чтобы поиск проводился не по точному значению, а по части значения?
Большое Вам спасибо за помощь! Очень выручаете!!!
 
Ответить
Сообщениеsv2014, Вот теперь все отлично просто, только остался мааааленький недочет, я его упустил первоначально из вида - при поиске строк содержащих критерий "Иванов" можно ли сделать так, чтобы макрос искал не только точное значение, но и учитывал такие значения как, например, "Иванов П." или "Иванов И.С." и т.д., т.е чтобы поиск проводился не по точному значению, а по части значения?
Большое Вам спасибо за помощь! Очень выручаете!!!

Автор - lyksor25
Дата добавления - 14.01.2016 в 23:49
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выгрузка данных по 2 критериям на новый лист (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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