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

Вход

Регистрация

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

 

= Мир MS Excel/Все ФИО у которых одинаковый адрес вбить в одну ячейку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Все ФИО у которых одинаковый адрес вбить в одну ячейку (Макросы/Sub)
Все ФИО у которых одинаковый адрес вбить в одну ячейку
S0LDAT Дата: Среда, 26.08.2015, 09:22 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Добрый день.
Помогите сделать:
Есть табличка, надо все ФИО у которых одинаковый адрес вбить в одну ячейку

Иванов А.А. ул. Ленина, 11, 2
Иванов В.А. ул. Ленина, 11, 2
Иванов И.А. ул. Ленина, 11, 2
Смирнов А.А. ул. Ленина, 33, 32
...

Итог

Иванов А.А., Иванов В.А., Иванов И.А. ул. Ленина, 11, 2
Смирнов А.А.

ул. Ленина, 33, 32
К сообщению приложен файл: 8010384.xlsm (10.4 Kb)
 
Ответить
СообщениеДобрый день.
Помогите сделать:
Есть табличка, надо все ФИО у которых одинаковый адрес вбить в одну ячейку

Иванов А.А. ул. Ленина, 11, 2
Иванов В.А. ул. Ленина, 11, 2
Иванов И.А. ул. Ленина, 11, 2
Смирнов А.А. ул. Ленина, 33, 32
...

Итог

Иванов А.А., Иванов В.А., Иванов И.А. ул. Ленина, 11, 2
Смирнов А.А.

ул. Ленина, 33, 32

Автор - S0LDAT
Дата добавления - 26.08.2015 в 09:22
nilem Дата: Среда, 26.08.2015, 09:38 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
S0LDAT, привет
попробуйте так
[vba]
Код
Sub ertert()
Dim x, i&, j&, k&, s$
x = Range("A3:E" & Cells(Rows.Count, 1).End(xlUp).Row).Value
With CreateObject("Scripting.Dictionary")
     .CompareMode = 1
     For i = 1 To UBound(x, 1)
         s = x(i, 2) & x(i, 3) & x(i, 4) & x(i, 5)
         If .Exists(s) Then
             k = .Item(s)
             x(k, 1) = x(k, 1) & ", " & x(i, 1)
         Else
             j = j + 1
             x(j, 1) = x(i, 1)
             x(j, 2) = x(i, 2)
             x(j, 3) = x(i, 3)
             x(j, 4) = x(i, 4)
             x(j, 5) = x(i, 5)
             .Item(s) = j
         End If
     Next i
End With

With Range("A3:E" & Cells(Rows.Count, 1).End(xlUp).Row + 2)
     .ClearContents
     .Resize(j).Value = x
End With
End Sub
[/vba]
...вбить в одну ячейку

как правильно - вбить или забить? :)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеS0LDAT, привет
попробуйте так
[vba]
Код
Sub ertert()
Dim x, i&, j&, k&, s$
x = Range("A3:E" & Cells(Rows.Count, 1).End(xlUp).Row).Value
With CreateObject("Scripting.Dictionary")
     .CompareMode = 1
     For i = 1 To UBound(x, 1)
         s = x(i, 2) & x(i, 3) & x(i, 4) & x(i, 5)
         If .Exists(s) Then
             k = .Item(s)
             x(k, 1) = x(k, 1) & ", " & x(i, 1)
         Else
             j = j + 1
             x(j, 1) = x(i, 1)
             x(j, 2) = x(i, 2)
             x(j, 3) = x(i, 3)
             x(j, 4) = x(i, 4)
             x(j, 5) = x(i, 5)
             .Item(s) = j
         End If
     Next i
End With

With Range("A3:E" & Cells(Rows.Count, 1).End(xlUp).Row + 2)
     .ClearContents
     .Resize(j).Value = x
End With
End Sub
[/vba]
...вбить в одну ячейку

как правильно - вбить или забить? :)

Автор - nilem
Дата добавления - 26.08.2015 в 09:38
miver Дата: Среда, 26.08.2015, 09:45 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 37 ±
Замечаний: 0% ±

Excel 2010
Так пойдет
[vba]
Код
Sub Collect()
     Dim Dict, key, Arr(), TArr(), i&, j&

     Set Dict = CreateObject("Scripting.Dictionary")
     Arr = [A3:E8].Value
     For i = 1 To UBound(Arr)
          
         key = ""
         For j = 2 To UBound(Arr, 2)
             key = key & Arr(i, j)
         Next j
         If Dict.exists(key) Then
             TArr = Dict(key)
             TArr(1) = TArr(1) & ", " & Arr(i, 1)
             Dict(key) = TArr
         Else
             ReDim TArr(1 To UBound(Arr, 2))
             For j = 1 To UBound(Arr, 2)
                 TArr(j) = Arr(i, j)
             Next j
             Dict.Add key, TArr
         End If
     Next i
     ReDim Arr(1 To Dict.Count, 1 To UBound(Arr, 2))
     i = 1
     For Each key In Dict.keys
         TArr = Dict(key)
         For j = 1 To UBound(TArr)
             Arr(i, j) = TArr(j)
         Next j
         i = i + 1
     Next key
      
     Range("A14", Range("A14").Offset(UBound(Arr) - 1, UBound(Arr, 2) - 1).Address).Value = Arr
      
End Sub
[/vba]
К сообщению приложен файл: 9474551.xlsm (17.8 Kb)
 
Ответить
СообщениеТак пойдет
[vba]
Код
Sub Collect()
     Dim Dict, key, Arr(), TArr(), i&, j&

     Set Dict = CreateObject("Scripting.Dictionary")
     Arr = [A3:E8].Value
     For i = 1 To UBound(Arr)
          
         key = ""
         For j = 2 To UBound(Arr, 2)
             key = key & Arr(i, j)
         Next j
         If Dict.exists(key) Then
             TArr = Dict(key)
             TArr(1) = TArr(1) & ", " & Arr(i, 1)
             Dict(key) = TArr
         Else
             ReDim TArr(1 To UBound(Arr, 2))
             For j = 1 To UBound(Arr, 2)
                 TArr(j) = Arr(i, j)
             Next j
             Dict.Add key, TArr
         End If
     Next i
     ReDim Arr(1 To Dict.Count, 1 To UBound(Arr, 2))
     i = 1
     For Each key In Dict.keys
         TArr = Dict(key)
         For j = 1 To UBound(TArr)
             Arr(i, j) = TArr(j)
         Next j
         i = i + 1
     Next key
      
     Range("A14", Range("A14").Offset(UBound(Arr) - 1, UBound(Arr, 2) - 1).Address).Value = Arr
      
End Sub
[/vba]

Автор - miver
Дата добавления - 26.08.2015 в 09:45
S0LDAT Дата: Среда, 26.08.2015, 09:58 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
nilem, miver, спасибо! :)

как правильно - вбить или забить?

ну это зависит от того, что хочешь получить в итоге yes
 
Ответить
Сообщениеnilem, miver, спасибо! :)

как правильно - вбить или забить?

ну это зависит от того, что хочешь получить в итоге yes

Автор - S0LDAT
Дата добавления - 26.08.2015 в 09:58
Michael_S Дата: Среда, 26.08.2015, 12:03 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
[offtop]
как правильно - вбить или забить?
-из гугла;
-вбить кол
-забить ...болт
[/offtop]
 
Ответить
Сообщение[offtop]
как правильно - вбить или забить?
-из гугла;
-вбить кол
-забить ...болт
[/offtop]

Автор - Michael_S
Дата добавления - 26.08.2015 в 12:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Все ФИО у которых одинаковый адрес вбить в одну ячейку (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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