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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2013, 21:17   #1
destic
Пользователь
 
Регистрация: 23.01.2013
Сообщений: 10
По умолчанию сцепка текста

Привет всем, еще раз)
Подскажите возможно ли макросом сцепить таблицу (учитывая столбец №) и вывести на новый лист в книге, учитывая то, что столбцов в таблице около 50-ти? Если возможно, покажите макет макроса, а то я сам не дойду никак
Вложения
Тип файла: rar пример.rar (7.8 Кб, 24 просмотров)
destic вне форума Ответить с цитированием
Старый 24.01.2013, 11:37   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

destic, вот такой алгоритм правильный?
  1. Макрос двигается по листу "Дано" по столбцу "B";
  2. запоминает текущее число в столбце "B";
  3. макрос двигается дальше по столбцу "B", пока встречается запомненное число, и запоминает номера строк листа Excel, где встречается запомненное число;
  4. когда запомненное число не встречается, макрос объединяет данные из строк, которые он запомнил. Эти данные переносятся на другой лист;
  5. макрос продолжает двигаться по столбцу "B" и анализирует другие числа в столбце "B", как указано в пунктах выше.
Скрипт вне форума Ответить с цитированием
Старый 24.01.2013, 12:25   #3
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Если возможно, покажите макет макроса
не вижу ваших попыток
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 24.01.2013, 21:25   #4
destic
Пользователь
 
Регистрация: 23.01.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от nerv Посмотреть сообщение
не вижу ваших попыток
пожалуйста.. больше одной строки у меня не сцепляется..
Вложения
Тип файла: rar ПРИМЕР.rar (650.5 Кб, 9 просмотров)
destic вне форума Ответить с цитированием
Старый 24.01.2013, 21:37   #5
destic
Пользователь
 
Регистрация: 23.01.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Скрипт Посмотреть сообщение
destic, вот такой алгоритм правильный?
  1. Макрос двигается по листу "Дано" по столбцу "B";
  2. запоминает текущее число в столбце "B";
  3. макрос двигается дальше по столбцу "B", пока встречается запомненное число, и запоминает номера строк листа Excel, где встречается запомненное число;
  4. когда запомненное число не встречается, макрос объединяет данные из строк, которые он запомнил. Эти данные переносятся на другой лист;
  5. макрос продолжает двигаться по столбцу "B" и анализирует другие числа в столбце "B", как указано в пунктах выше.
да все верно, только
Цитата:
Сообщение от Скрипт Посмотреть сообщение
  1. макрос двигается дальше по столбцу "B", пока встречается запомненное число, и запоминает номера строк листа Excel, где встречается запомненное число;
если в столбце B нашлись одинаковые числа, то последовательно сцепить строки соответствующие этим числам до определенной ячейки (g) в одну ячейку; столбцы h,j,i суммировать также по столбцу B, как в примере.

Последний раз редактировалось destic; 24.01.2013 в 23:27.
destic вне форума Ответить с цитированием
Старый 25.01.2013, 07:41   #6
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Цитата:
destic: если в столбце B нашлись одинаковые числа,
по всему столбцу искать или сразу после числа?

На примере вашей книги из сообщения #1. Сначала в столбце "B" встретилось число "1". Коду двигаться до конца столбца "B" в поисках числа "1" или двигаться пока не начнётся другое число, в вашем примере другое число - это число "2".
Скрипт вне форума Ответить с цитированием
Старый 26.01.2013, 23:27   #7
destic
Пользователь
 
Регистрация: 23.01.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Скрипт Посмотреть сообщение
по всему столбцу искать или сразу после числа?
вприницпе все-равно, т.к. ячейки будут отсортированы по возрастанию, главное чтобы если число повторялось, то все последующие ячейки сцеплялись в одну ячейку.
destic вне форума Ответить с цитированием
Старый 27.01.2013, 12:02   #8
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Для первого файла
Код:
Sub www()
    Dim arr(), arr1(), b(), a$, aa(), bb(), i&
    Dim sh As Worksheet, odict As Object
    Set sh = Sheets("Дано")
    With sh
        arr = .[B2].CurrentRegion.Offset(1).Value
    End With
    Set odict = CreateObject("Scripting.Dictionary")
    With odict
        For i = 1 To UBound(arr) - 1
            If Len(arr(i, 2)) Then
                a = arr(i, 2) & " " & arr(i, 3) & " " & arr(i, 4) _
                  & " " & arr(i, 5) & ", " & arr(i, 6)
            Else
                a = arr(i, 3) & " " & arr(i, 4) & " " & arr(i, 5) & ", " & arr(i, 6)
            End If
            b = Array(a, arr(i, 7), arr(i, 8), arr(i, 9), arr(i, 10), arr(i, 11))

            If .exists(arr(i, 1)) Then
                b(0) = .Item(arr(i, 1))(0) & " " & b(0)
                b(1) = .Item(arr(i, 1))(1) + b(1)
                b(2) = .Item(arr(i, 1))(2) + b(2)
                b(3) = .Item(arr(i, 1))(3) + b(3)
            End If
            .Item(arr(i, 1)) = b
        Next
        aa = .keys: bb = .items
        ReDim arr(1 To .Count, 1 To 2)
        ReDim arr1(1 To .Count, 1 To 5)
        For i = 1 To .Count
            arr(i, 1) = aa(i - 1)
            arr(i, 2) = bb(i - 1)(0)

            arr1(i, 1) = bb(i - 1)(1)
            arr1(i, 2) = bb(i - 1)(2)
            arr1(i, 3) = bb(i - 1)(3)
            arr1(i, 4) = bb(i - 1)(4)
            arr1(i, 5) = bb(i - 1)(5)
        Next
        i = .Count
    End With
    Sheets(3).Range("B3").Resize(i, 2) = arr
    Sheets(3).Range("F3").Resize(i, 5) = arr1

End Sub
RAN. вне форума Ответить с цитированием
Старый 27.01.2013, 12:49   #9
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

А это не подойдет?
Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск текста с копированием ячеек типа ВПР но для сложного текста! Elkin_087 Microsoft Office Excel 1 24.06.2012 22:06
Поиск по знацению и сцепка staniiislav Microsoft Office Excel 3 17.02.2011 15:24
Выбор последнего записанного текста (именно текста а не значения) из соседнего листа Uralmaster Microsoft Office Excel 1 28.01.2011 21:06
Сцепка переменных ячеек в Макросе Ексель Android1 Microsoft Office Excel 6 27.08.2010 08:56
Сцепка нескольких текстовых ячеек в одну строку Josser Microsoft Office Excel 4 20.07.2009 12:49