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

Вход

Регистрация

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

 

= Мир MS Excel/Транспонирование с удалением дубликатов слева - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Транспонирование с удалением дубликатов слева
ant6729 Дата: Суббота, 26.08.2017, 00:24 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Доброй ночи, уважаемые форумчане!

Как из таблицы вида слева сделать таблицу справа?

Не могу решить по аналогии ни с одним из накопленных мною на этом форуме решений.
Прошу помощи с решением данной задачи.
Возможно, можно решить и формулами.
Файл приложил.
К сообщению приложен файл: 8734772.xlsx (8.2 Kb)
 
Ответить
СообщениеДоброй ночи, уважаемые форумчане!

Как из таблицы вида слева сделать таблицу справа?

Не могу решить по аналогии ни с одним из накопленных мною на этом форуме решений.
Прошу помощи с решением данной задачи.
Возможно, можно решить и формулами.
Файл приложил.

Автор - ant6729
Дата добавления - 26.08.2017 в 00:24
Nordheim Дата: Суббота, 26.08.2017, 01:16 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Option Explicit

Sub test()
Dim i&, dic As Object, imax&, dic2 As Object
Dim arr(), arr1$(), lrow&, ikey, x&
Set dic = CreateObject("scripting.dictionary")
Set dic2 = CreateObject("scripting.dictionary")
On Error Resume Next
With Лист1
    lrow = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 1 To lrow
        dic.Item(CStr(.Cells(i, 1))) = dic.Item(CStr(.Cells(i, 1))) + 1
        dic2.Item(CStr(.Cells(i, 1))) = dic2.Item(CStr(.Cells(i, 1))) & .Cells(i, 2) & " "
    Next i
    imax = Application.Max(dic.items)
    i = 0
    ReDim arr(1 To dic.Count, 1 To imax + 1)
    For Each ikey In dic2.keys
        i = i + 1: arr(i, 1) = ikey
        arr1 = Split(Trim(dic2.Item(ikey)), " ")
        For x = 2 To UBound(arr, 2)
            arr(i, x) = arr1(x - 2)
        Next x
    Next ikey
    On Error GoTo 0
    .[d1].Resize(UBound(arr), UBound(arr, 2)) = arr
End With
End Sub
[/vba]


Все гениальное просто и все простое гениально.
 
Ответить
Сообщение[vba]
Код
Option Explicit

Sub test()
Dim i&, dic As Object, imax&, dic2 As Object
Dim arr(), arr1$(), lrow&, ikey, x&
Set dic = CreateObject("scripting.dictionary")
Set dic2 = CreateObject("scripting.dictionary")
On Error Resume Next
With Лист1
    lrow = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 1 To lrow
        dic.Item(CStr(.Cells(i, 1))) = dic.Item(CStr(.Cells(i, 1))) + 1
        dic2.Item(CStr(.Cells(i, 1))) = dic2.Item(CStr(.Cells(i, 1))) & .Cells(i, 2) & " "
    Next i
    imax = Application.Max(dic.items)
    i = 0
    ReDim arr(1 To dic.Count, 1 To imax + 1)
    For Each ikey In dic2.keys
        i = i + 1: arr(i, 1) = ikey
        arr1 = Split(Trim(dic2.Item(ikey)), " ")
        For x = 2 To UBound(arr, 2)
            arr(i, x) = arr1(x - 2)
        Next x
    Next ikey
    On Error GoTo 0
    .[d1].Resize(UBound(arr), UBound(arr, 2)) = arr
End With
End Sub
[/vba]

Автор - Nordheim
Дата добавления - 26.08.2017 в 01:16
AndreTM Дата: Суббота, 26.08.2017, 01:42 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Возможно, можно решить и формулами
Почему нет? :)
К сообщению приложен файл: 8734772_2.xlsx (8.8 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
Возможно, можно решить и формулами
Почему нет? :)

Автор - AndreTM
Дата добавления - 26.08.2017 в 01:42
nilem Дата: Суббота, 26.08.2017, 06:29 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
как вариант:


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениекак вариант:

Автор - nilem
Дата добавления - 26.08.2017 в 06:29
ant6729 Дата: Суббота, 26.08.2017, 07:23 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Спасибо, воспользуюсь вторым вариантом nilem...
Так писать сложно, пока сложно понять последний вариант. Но...ничего....)))
 
Ответить
СообщениеСпасибо, воспользуюсь вторым вариантом nilem...
Так писать сложно, пока сложно понять последний вариант. Но...ничего....)))

Автор - ant6729
Дата добавления - 26.08.2017 в 07:23
  • Страница 1 из 1
  • 1
Поиск:

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