Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
VBA VBA EXCEL: Собрать кучу файлов в один https://www.cyberforum.ru/ vba/ thread769941.html
В папке находится куча xls файлов. У всех у них одинаковая структура. Но она может меняться периодически. Необходимо все файлы собрать в один. Первый файл из которого будут браться данные копируется полностью, включая заголовки. А у последующих файлов данные беруться без заголовков
Вопросы по теории из теста по VBA VBA
Был тест по VBA. Несколько вопросов вызвали сомнение. Помогите ответить. 1. Какой цикл проходит быстрее- внутренний или внешний? 2. Различия между процедурой функцией и процедурой пользователя 3. После окончания процедуры функции куда возвращается программа? 4. Этот вопрос вообще смутил: Объект Application относится к какому уровню? (1, 2 или 3)
VBA Программное изменение параметров шкалы оси Подскажите, как программно указать минимальное, максимальное значение и цену деления для оси "Y"? Задача стоит так: вводятся исходные значения, по которым рассчитываются 2 показателя (a, X). В итоге в графике максимальным значением по оси Y должно быть X+3*a; минимальным - X-3*a, цена деления - a. https://www.cyberforum.ru/ vba/ thread769902.html VBA Продажа билетов в театральной кассе Создать таблицу продажи билетов в театральной кассе с полями: название спектакля, тип места в зрительном зале (партер, бельэтаж и т.д.), ряд, место, дата, время спектакля, кол-во билетов, цена билета в зависимости от типа места, итоговая сумма. Разработать диалоговое окно для заполнения таблицы продажи билетов. Все необходимые данные для формирования диалога должны существовать на листе исходных... https://www.cyberforum.ru/ vba/ thread769898.html
VBA Регистрация продажи авиабилетов
Умоляю,помогите!!! Создать таблицу продажи билетов, содержащее следующее поля: ФИО покупателя, Страна, Город, № рейса (выбирать из списка свободных мест по выбранному типу), Тип места (салон 1 класса, места для некурящих, …), № места (выбирать из списка свободных мест по выбранному типу), Кол-во билетов, Наличие льгот (детский билет), Стоимость билета (в зависимости от типа и льгот), Итоговая...
VBA Поиск первой пустой ячейки в строке https://www.cyberforum.ru/ vba/ thread769781.html
Суть такова: Есть два листа в Excel ("Данные" и "Таблица") необходимо перенести данные из столбца "N3:N7" листа "данные" сначала в столбец "В3:B7" затем в столбец "С3: C7" затем в столбец "D3: D7" и т.д. листа "таблица" так как значения в ячейках "N3:N7" будут меняться. Пробовал написать макрос, я честно говоря чайник в этом, излазил кучу форумов и ссылок и так и не нашел как же можно...
VBA Найти средние арифметические С(I) положительных элементов в каждой строке матрицы https://www.cyberforum.ru/ vba/ thread769765.html
Нужна помощь с задачками по VBA Матрицу А(10, 8) заполнить целыми случайными числами в диапазоне от -23 до 23. Найти средние арифметические С(I) положительных элементов в каждой строке, определить номер N строки с максимальным значением С(I). Вывести А, С, N.
Удалить из матрицы строку и столбец, на пересечении которых находится минимальный элемент VBA
Нужна помощь с задачками по VBA Сформировать двумерный массив. Удалить из него строку и столбец, на пересечении которых находится минимальный элемент.
VBA Даны x1, x2, …, x15. Сформировать массив Y. Определить сумму y(i) с нечётными индексами https://www.cyberforum.ru/ vba/ thread769723.html
Массив нужно сформировать по формуле y=x^3/xmin. Подскажите, пожалуйста, где ошибка в программе? Она есть точно. Sub programma Dim x(15), y(15), xmin, g As Single For I = 1 To 15 x(I) = Cells(I, 1) Next I If x(1) > x(2) Then xmin = x(2)
VBA Сколько раз символ А встречается в предложении Помогите пожалуйста https://www.cyberforum.ru/ vba/ thread769648.html
VBA Поменять местами максимальный и минимальный элементы массива
Помогите пожалуйста
VBA Даны x1, x2, …, x15. Сформировать массив Y. Определить сумму y(i) с нечётными индексами кaк пoлучилoсь 3,7? https://www.cyberforum.ru/ vba/ thread769610.html
259 / 7 / 1
Регистрация: 22.01.2013
Сообщений: 47
25.01.2013, 15:58  [ТС] 0

Поиск данных в листах и копирование их в отдельные листы - VBA - Ответ 4051937

25.01.2013, 15:58. Показов 8561. Ответов 14
Метки (Все метки)

Ответ

огромное спасибо за код, есть ещё пару вопросов:
1. что нужно прописать в данный код, чтобы он в каждом создаваемом листе вставлял ещё:
для ячейки A1, на создаваемом листе копировал бы формулы с листа0 диапазона B1:P1, в создаваемом листе в B1:P1
для ячейки A2, на создаваемом листе копировал бы формулы с листа0 диапазона B2:P2, в создаваемом листе в B1:P1
для ячейки A3, на создаваемом листе копировал бы формулы с листа0 диапазона B3:P3, в создаваемом листе в B1:P1
и т.д.

2. что нужно прописать в код, чтобы если не находило слово из листа0 диапазон A1:A25 добавлял бы в листе с названием "другие".
В инете нашёл такого рода код последний снизу, частично он выполняет те функции которые мне необходимы.

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Option Explicit
 
Sub Procedure_1()
    
    'В константе указываете порядковый номер последнего
        'листа, который должен просматриваться макросом.
    'Это связано с тем, что в ходе работа коды в книгу
        'будут добавляться листы.
    Const mySheetCount As Long = 2
 
    Dim shSheet_1 As Excel.Worksheet
    Dim shLast As Excel.Worksheet
    Dim rngSearch As Excel.Range
    Dim rngFind As Excel.Range, myAddress As String
    Dim myLastRow_1 As Long, myLastRow_2 As Long
    Dim iSheet_1 As Long, jSheet As Long
    
    '1. На время работы кода для ускорения работы кода отключаем:
    'Обновление монитора.
    Application.ScreenUpdating = False
    'События.
    Application.EnableEvents = False
    
    '2. Даём листу "Лист0" имя "shSheet_1".
    'Через это имя будем обращаться к этому листу.
    Set shSheet_1 = Worksheets("Лист0")
    
    'Двигаемся по листу "Лист0" по первому столбцу
        'до первой пустой ячейки.
    'Начиаем двигаться с первой строки.
    iSheet_1 = 1
    Do While IsEmpty(shSheet_1.Cells(iSheet_1, "A")) = False
    
    '3. Чтобы код был проще, сразу создаём лист для текущей ячейки,
    'независимо от того, встретится текст из текущей ячейки на
    'просматриваемых листах или нет.
    'After:=Worksheets(Worksheets.Count) - это последний лист.
    'Одновременно, при создании листа, даём имя "shLast" листу.
    'Через это имя будем обращаться к листу.
        Set shLast = Worksheets.Add(After:=Worksheets(Worksheets.Count))
        
    '4. Даём имя листу в соответствии с данными из ячейки.
    'Только в данном случае нужно учитывать:
    '1) нет ли уже листа с таким именем;
    '2) содержит ли имя допустимые символы;
    '3) длина имени.
    'Я этого ничего не буду учитывать.
        shLast.Name = shSheet_1.Cells(iSheet_1, "A").Value
    
    '5. Подготавливаем номер строки, куда будут вставляться данные на новом листе.
        myLastRow_2 = 1
    
    'В цикле с "jSheet" проходимся по листам, которые надо обработать.
        For jSheet = 2 To mySheetCount Step 1
        
    'Буду использовать команду "Find" для поиска.
    '6. Задаю диапазон поиска, чтобы код работал быстрее и лишнее
    'не просматривал.
    '6.1. Определяю последнюю строку с данными на текущем листе
    'в столбце "A".
            myLastRow_1 = Worksheets(jSheet).Columns("A").Find(What:="?", _
                LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _
                SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row
    '6.2. Даю фрагменту листа, где нужно искать, имя "rngSearch".
    'Здесь вместо "A1" можно указать строку, с которой нужно искать.
            Set rngSearch = Worksheets(jSheet).Range("A1:A" & myLastRow_1)
            
    '7. Осуществляем поиск.
    'After:=rngSearch.Cells(rngSearch.Rows.Count, 1) - здесь указываем,
    'что поиск начинаем с последней ячейки. Это связано с тем, что поиск
    'начинается после указанной ячейки, чтобы данные брались в том порядке,
    'в котором они находятся на листе.
    'LookAt:=xlPart - поиск по частичному совпадению, например "груш".
            Set rngFind = rngSearch.Find(What:=CStr(shSheet_1.Cells(iSheet_1, "A").Value), _
                After:=rngSearch.Cells(rngSearch.Rows.Count, 1), LookIn:=xlValues, _
                LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
                
    'Если слово не будет найдено, то в переменной "rngFind"
    'будет содержаться слово "Nothing".
            If rngFind Is Nothing Then
            
    'Переходим к следующему листу.
                GoTo metka
            
            End If
            
    'Если был результат поиска, то найденной ячейке
    'даётся имя "rngFind". Через это имя можно обращаться к
    'найденной ячейке.
    '8. Запоминаем адрес ячейки, чтобы потом остановить поиск,
    'дойдя до этой же ячейки.
            myAddress = rngFind.Address
            
    'Ведём поиск, пока не вернёмся к первой найденной ячейке.
            Do
            
    '9. Копируем строку на последний лист
                rngFind.EntireRow.Copy Destination:=shLast.Range("A" & myLastRow_2)
                
    '10. Подготавливаем номер строки на последнем листе
    'для следующих данных.
                myLastRow_2 = myLastRow_2 + 1
                
    '11. Ищем дальше в том же диапазоне.
                Set rngFind = rngSearch.FindNext(rngFind)
                
            Loop While rngFind.Address <> myAddress
            
metka:
        
        Next jSheet
    
    '12. Переход к следующей строке.
        iSheet_1 = iSheet_1 + 1
        
    Loop
 
    '13. Включаем то, что отключали в начале работы кода.
    Application.ScreenUpdating = False
    Application.EnableEvents = False
 
End Sub
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
Option Explicit
Sub разноскаданных()
Dim i As Double
Dim iLastRow1 As Double
Dim K As Double, wsSh As Worksheet
Dim li As Long 'зачистка ячеек в листах (кроме начального)
For li = 2 To Sheets.Count
Sheets(li).UsedRange.Value = Empty
Next li
 
iLastRow1 = Sheets("main").Cells(Rows.Count, 2).End(xlUp).Row 'находим последнюю строку листа main
With Sheets("main")
    On Error Resume Next
    For i = 0 To iLastRow1 'перебираем весь столбец по условию до последней строки
    Set wsSh = Sheets(Trim(.Cells(i + 3, 4).Value))
        If Not wsSh Is Nothing Then
            wsSh.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 15).Value = .Cells(i + 3, 1).Resize(, 15).Value
        Else
            Sheets("інші").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 15).Value = .Cells(i + 3, 1).Resize(, 15).Value
        End If
        Set wsSh = Nothing
    Next i
End With
End Sub


Вернуться к обсуждению:
Поиск данных в листах и копирование их в отдельные листы VBA
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2013, 15:58
Готовые ответы и решения:

Перенос данных в отдельные листы по форме и условию
Здравствуйте!! Есть массив Данных в разрезе Отделов, нужно перенести каждый Отдел из Данных в...

Поиск и копирование определенных значений в определенные ячейки в листах книги
никогда не писал макросы. поверхностно знаю формулы. - задача такова: есть книга в ней...

Поиск на листах и систематизация данных
На &quot;Лист1&quot; в 1 столбце находится список организаций в столбец 2 и 3 должны копироваться данные со 2...

Загрузка и разбивка на отдельные листы в книге
Добрый день! В наличии excel 2003 и файл содержащий 400000 строк(9 столбцов). нужно загрузить...

14
25.01.2013, 15:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2013, 15:58
Помогаю со студенческими работами здесь

Вставить в Excel 2010 рисунки из папки в отдельные листы
Здравствуйте! Помогите пожалуйста написать макрос в Excel 2010: По нажатию кнопки находится папка,...

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

Могу ли я сохранить макросом в рабочую книгу отдельные листы из другой рабочей книги?
Могу ли я сохранить макросом в рабочую книгу отдельные (конкретные имена) листы из другой рабочей...

Разбиение файла Word на отдельные листы при двусторонней печати по две страницы на листе
Добрый вечер. Прошу помощи, так как основательно запутался в решении данной задачи при моих...

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