Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2016, 17:19   #1
midoks
 
Регистрация: 29.02.2016
Сообщений: 7
По умолчанию Как значения первого столбца отфильтрованных строк сцепить в формате текста

Коллеги!
Есть задумка, но не знаю как решить.
В таблице сделана выборка строк (с помощью элемента управления строк), фильтрую выбранные. Теперь значения первого столбца выбранных строк надо сцепить в формате текста и записать в назначенную ячейку.
Как организовать цикл процедуры, чтобы всегда в полученном тексте было столько исходных значений, сколько отфильтрованных строк.
Кто знает - помогите.
midoks вне форума Ответить с цитированием
Старый 29.02.2016, 18:41   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

такой вариант
1. добавьте в проект программый модуль
2. скопируйте в него этот
Код:
Function FilteredA()
  Dim ws As Worksheet
  Set ws = ActiveSheet
  Range(Cells(1, 1), Cells(Rows.Count, 1)).Copy
  Worksheets.Add(after:=Worksheets(Worksheets.Count)).Paste
  FilteredA = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).Value
  Application.DisplayAlerts = False
  Worksheets(Worksheets.Count).Delete
  Application.DisplayAlerts = False
End Function


Sub Test()
  Dim arr
  arr = FilteredA
  MsgBox UBound(arr)
End Sub
3. сделайте активным лист на котором фильтруете данные
4. выполните Test
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.03.2016, 08:40   #3
midoks
 
Регистрация: 29.02.2016
Сообщений: 7
По умолчанию

Спасибо за отклик.

Я хочу пояснить проблему и высылаю Вам пример.

Продублирую текст:

Исходные данные:
Петров 1
Иванов 2
Сидоров 3
Петров 4
Иванов 5
Сидоров 6
Петров 7

Макрос:
После выборки фильтра "Петров" должны получить следующий результат:
Петров 1;4;7
Список Фамилий по числу строк может быть любым.
Проблема : как установить ограничение Текст1, Текст2 и т.д. В нашем случае ограничение должно быть из 3 значений. Здесь должен быть какой-то цикл с ограничением по условию.
Вложения
Тип файла: xlsx Тест.xlsx (11.1 Кб, 14 просмотров)
midoks вне форума Ответить с цитированием
Старый 03.03.2016, 09:53   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Вы просто-таки чемпион по разъяснениям. Может так надо?:
Код:
Public Sub www()
    Dim d As Object, a, i&
    Set d = CreateObject("scripting.dictionary")
    a = [a1].CurrentRegion.Value
    For i = 1 To UBound(a)
        If d.Item(a(i, 1)) = "" Then
            d.Item(a(i, 1)) = a(i, 2)
        Else
            d.Item(a(i, 1)) = d.Item(a(i, 1)) & "," & a(i, 2)
        End If
    Next
    [h1].Resize(d.Count, 2) = Application.Transpose(Array(d.keys, d.items))
End Sub
Вложения
Тип файла: xls Тест.xls (55.0 Кб, 19 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 03.03.2016, 10:40   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см. вложение
Вложения
Тип файла: rar Тест.rar (21.3 Кб, 8 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.03.2016, 11:42   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

не смотря на полученный титул "чемпиона по разьяснениям"
читаем заголовок:
"Как значения первого столбца отфильтрованных строк..."
вникаем в задачу и понимаем, что сцепить в строку нужно значения с второго столбца и что даже чемпионам нужно работать над точностью формулировок
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.03.2016, 22:57   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Можно поискать по форуму (или в сети) код UDF
Код:
=VLOOKUPCOUPLE($A$2:$B$8;1;A13;2;":")
Зачем обрезать 3 элемента - не понял... но можно навесить стандартные формулы поиска трёх элементов и выкидывать всё что после.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 03.03.2016 в 23:02.
Hugo121 вне форума Ответить с цитированием
Старый 09.03.2016, 11:30   #8
midoks
 
Регистрация: 29.02.2016
Сообщений: 7
По умолчанию

Спасибо за все и за критику то же.
Я не программист, я только учусь.
То, что Вы мне прислали - подходит. Теперь попробую применить в своей таблице учета.
midoks вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как взять из Excel данные, начиная с первого столбца, средствами ADO? Скрипт Microsoft Office Excel 14 26.05.2014 12:19
Как взять из Excel данные, начиная с первого столбца, средствами ADO? Скрипт Microsoft Office Excel 0 21.05.2014 12:21
значения строк ключевого столбца lishenaianevinosti SQL, базы данных 11 17.01.2013 13:18
В прямоугольной матрице переставить столбцы так, чтобы сумма элементов столбца росла от первого столбца Aleo13 Помощь студентам 5 15.10.2008 18:34
сцепить значения в формате дат StasSv Microsoft Office Excel 2 21.09.2008 00:44