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

Вывод содержания коллекции на лист

27.11.2012, 10:27. Показов 14028. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть коллекция NewColl в каждом элементе содержится строка, подскажите как вывести на новый лист содержание этой коллекции, чтобы получилась таблица.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2012, 10:27
Ответы с готовыми решениями:

Как вставить на лист строку из коллекции строк?
Всем доброго дня. Собрал все строки из нескольких файлов в коллекцию. А вот как их все вставить на лист что-то не соображу. elm...

Вывод содержания коллекции SortedDictionary на форму
Здравствуйте!!! Имеется метод для формирования объектов коллекции и непосредственная запись в коллекцию. Нужно вывести на форму в...

Serializable в binary коллекции лист
прошу помочь, не могу понять как десериализовать коллекцию List ошибка в методе десериализации коллекции settings, как правильно сделать?...

11
117 / 31 / 2
Регистрация: 16.11.2012
Сообщений: 65
27.11.2012, 10:51
Заполняется коллекция случайными значениями, затем эти значения помещаются в таблицу ворд.
Или вам нужно в эксель?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub start_me()
Dim NewColl As New Collection
 
Randomize Timer
For i = 1 To 20
NewColl.Add Int((100 * Rnd()) + 1)
Next i
 
For j = 1 To NewColl.Count
ThisDocument.Tables(1).Cell(j, 1).Range.Text = NewColl(j)
Next j
 
End Sub
Вложения
Тип файла: doc массив на лист.doc (52.0 Кб, 27 просмотров)
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 6
27.11.2012, 14:08  [ТС]
А для Excel ?
P.S.
Посоветуйте учебник(не справочник) по VBA EXCEL для начинающих, чтоб понятно и желательно с примерами.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
27.11.2012, 14:57
Я нашел в сети: Гарнаев (*.pdf), Уокенбах (*.pdf). Скачать можно безплатно.
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
27.11.2012, 14:58
Цитата Сообщение от Andrew11 Посмотреть сообщение
Посоветуйте учебник(не справочник) по VBA EXCEL для начинающих, чтоб понятно и желательно с примерами.
таких нет книг.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
27.11.2012, 15:16
Уточняю названия, если это то, что Вы ищете:
А. Гарнаев - "Самоучитель VBA"
J. Walkenbach - "Профессиональное программирование на VBA в Excel 2003"
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
27.11.2012, 15:18
Igor_Tr,
и то, и другое очень рекомендую. Гарнаев очень доступно объясняет, если с нуля начинать - лучше с него. Уокенбах - очень подробно, основательно.
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 6
27.11.2012, 15:41  [ТС]
Igor_Tr, mc-black спасибо.
Кто-нибудь помогите с моей задачей. Сразу предупреждаю я не прогрммист, сильно не пинайте.

Дано:
EXCEL Лист1
список товаров, производитель(причем у одного производителя может быть несколько товаров), категория товара, URL

ЛИСТ2
Производители с которыми я могу работать

Задача: Создать таблицу на Лист3 где будут те строки из таблицы на ЛИСТ1 в которых производитель равен производителю в таблице на Лист2

У меня получилось вытащить эти строки в коллекцию, Visual Basic в окне Locals коллекция NewColl в ней присутствуют необходимые строки, но как их напечатать на Лист3 я не знаю.

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
Sub Search_delete()
Dim RegV As New Collection 'коллекция со всеми производителями ("Лист1").Cells(i, "B")
Dim MyV As New Collection 'коллекция с моими производителями ("Лист2").Cells(i, "A")
Dim NewColl As New Collection 'коллекция с  новыми значениями производителей
Dim Allrows As New Collection ' коллекция с индексами строк таблицы производителей
Dim AllTable As New Collection ' коллекция со всеми строками таблицы Вся таблица на Лист 1
Dim i As Integer 'счетчик 1
Dim j As Integer 'счетчик 2
 
'----------------------Наполняем коллекцию всеми строками таблицы Лист1
For i = 1 To 417 'Диапозон строк для наполнения колекции
    AllTable.Add Item:=Sheets("Лист1").Rows(i).Value
Next i
i = 0
'----------------------Наполняем коллекцию моими производителями Лист2
For i = 1 To 133 'Диапазон строк для наполнения колекции
        MyV.Add Item:=Sheets("Лист2").Cells(i, "A").Value
Next i
i = 0
'----------------------Наполняем коллекцию всеми производителями
For i = 1 To 417 'Диапазон строк для наполнения колекции Лист1 Столбец B
    RegV.Add Item:=Sheets("Лист1").Cells(i, "B").Value
Next i
 
i = 0
j = 0
'---------------------Начинаем проверку на совпадение
For j = 1 To RegV.Count 'Лист1 Столбец B
 
    For i = 1 To MyV.Count 'Лист2 Столбец A
            
        If RegV(j) = MyV(i) Then 'Если Производитель из Лист1 Столбец B равен моему производителю Лист2 Столбец A
            Allrows.Add Item:=j 'Заносим индекс строки которая должна остаться
        End If
    Next i
Next j
'MsgBox (NewColl.Count)
i = 0
j = 0
MsgBox (Allrows.Count)
MsgBox (AllTable.Count)
'Заносим в коллекцию NewColl необходимые значения из AllTable строки индекс которых хранится в Allrows
For j = 1 To AllTable.Count
    For i = 1 To Allrows.Count
        If j = Allrows(i) Then
           NewColl.Add Item:=AllTable.Item(j)
             
        End If
    Next i
Next j
 
MsgBox (NewColl.Count)
 
End Sub
Вложения
Тип файла: xlsx MyMacro_copy.xlsx (39.4 Кб, 22 просмотров)
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
27.11.2012, 16:15
Andrew11, т.е. алгоритм такой:
  1. двигаемся сверху вниз по первому листу по столбцу A;
  2. ищем текст из текущей ячейки на втором листе во всём столбце A;
  3. если есть совпадение, то переносим текущую строку на третий лист.
Так?
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 6
27.11.2012, 16:29  [ТС]
1. Не по А, а по B (В А находятся товары в B Производители, в Лист2 А тоже Производители, т.е. сравниваем производителей с производителями)
Все остальное верно.(т.е. все строки в которых производитель с Листа1("В") совпадает с Производителем Лист2("А") переносим на ЛИСТ3)
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
27.11.2012, 16:43
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
Sub Procedure_1()
 
    'Здесь указываем, с какой строки начинаются данные на первом листе.
    Const lStart As Long = 1
 
    Dim shSheet_1 As Excel.Worksheet
    Dim shSheet_2 As Excel.Worksheet
    Dim shSheet_3 As Excel.Worksheet
    Dim lLastRow As Long
    Dim i As Long
    
    'Обращаться к листам для удобства будем через переменные.
    Set shSheet_1 = Worksheets(1)
    Set shSheet_2 = Worksheets(2)
    Set shSheet_3 = Worksheets(3)
    
    'Чтобы код быстрее работал, отключаем обновление монитора.
    Application.ScreenUpdating = False
    
    'Определяем пустую строку на третьем листе, куда надо вставлять данные.
    lLastRow = shSheet_3.Cells(shSheet_3.Rows.Count, "A").End(xlUp).Row + 1
    
    'Двигаемся по первому листу по столбцу B до первой пустой ячейки.
    i = lStart
    Do While IsEmpty(shSheet_1.Cells(i, "B")) = False
        
        'Берём данные из текущей ячейки и ищем на втором листе в столбце A.
        If Not shSheet_2.Columns("A").Find(What:=CStr(shSheet_1.Cells(i, "B").Value), _
                LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
                False, SearchFormat:=False) Is Nothing Then
             
             'Если найдено, то переносим на третий лист в следующую свободную ячейку.
             shSheet_3.Range("A" & lLastRow & ":D" & lLastRow).Value = _
                shSheet_1.Range("A" & i & ":D" & i).Value
             
             'Определяем номер следующей пустой строки на третьем листе.
             lLastRow = lLastRow + 1
        End If
 
        'Переход к следующей строке на первом листе.
        i = i + 1
        
    Loop
    
    'Включаем обновление монитора.
    Application.ScreenUpdating = True
    
    'Сообщение, что работа кода завершена.
    MsgBox "Работа кода завершена!", vbInformation
    
End Sub
2
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 6
27.11.2012, 16:57  [ТС]
Все работает, как часы. СПАСИБО.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2012, 16:57
Помогаю со студенческими работами здесь

Вывод содержания видеопамяти
Как вывести на экран содержимое видеопамяти в DOS? По какому адресу она находится?

Вывод содержания директории
Как роспичатать дерево директорий поддиректорий.. Допустим есть папка cat Нужно вывести все поддиректории...и т.д...Все чтоб красиво,...

Вывод содержания файла в с++
#include<fstream.h> #include<math.h> #include<conio.h> void main() {clrscr(); int v; ifstream lekcia1; ...

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

Вывод в dos содержания переменной
Одна очень крутая девушка помогла написать программку со стеками, а я вот никак к ней вывод прилепить не могу. Подскажите каким образом...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru