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

Вход

Регистрация

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

 

= Мир MS Excel/перенос с использованием макроса - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » перенос с использованием макроса (Формулы)
перенос с использованием макроса
bivilbi Дата: Вторник, 01.10.2013, 14:01 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Как можно сделать как в примере? записей очень много, и у каждого номера (нн) может быть 1-2-3-4 записи?
если-бы нн было одинаковым,например у каждой записи строго по 3 записи,можно макрос сделать. а так непостоянное кол-во
Спасибо за помощь!
К сообщению приложен файл: 4636093.xlsx (8.8 Kb)


Сообщение отредактировал bivilbi - Вторник, 01.10.2013, 14:23
 
Ответить
СообщениеКак можно сделать как в примере? записей очень много, и у каждого номера (нн) может быть 1-2-3-4 записи?
если-бы нн было одинаковым,например у каждой записи строго по 3 записи,можно макрос сделать. а так непостоянное кол-во
Спасибо за помощь!

Автор - bivilbi
Дата добавления - 01.10.2013 в 14:01
Hugo Дата: Вторник, 01.10.2013, 14:11 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
По примеру - только вручную.
Но если составить полный список соответствия этих толь/анатоль - то можно как-то макрос придумать.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеПо примеру - только вручную.
Но если составить полный список соответствия этих толь/анатоль - то можно как-то макрос придумать.

Автор - Hugo
Дата добавления - 01.10.2013 в 14:11
bivilbi Дата: Вторник, 01.10.2013, 14:15 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
а если что-то типа условия сделать?
если нн=1 то перенести ячейки тудато?
что то типа такого?
 
Ответить
Сообщениеа если что-то типа условия сделать?
если нн=1 то перенести ячейки тудато?
что то типа такого?

Автор - bivilbi
Дата добавления - 01.10.2013 в 14:15
Hugo Дата: Вторник, 01.10.2013, 14:19 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
Я одинаковые номера и не заметил... Да, по номерам можно делать, это проще.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЯ одинаковые номера и не заметил... Да, по номерам можно делать, это проще.

Автор - Hugo
Дата добавления - 01.10.2013 в 14:19
_Boroda_ Дата: Вторник, 01.10.2013, 14:39 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вариант
К сообщению приложен файл: 4636093_1.xlsx (11.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВариант

Автор - _Boroda_
Дата добавления - 01.10.2013 в 14:39
Hugo Дата: Вторник, 01.10.2013, 16:20 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
Макрос. Без обработки ошибки выделения диапазона!
[vba]
Код
Option Explicit

Sub tt()
      Dim a(), i&, ii&, x&, t$, m&, el, elel

      a = Application.InputBox("Выделите исходный диапазон (с шапкой)", "Get Range", Type:=8).Value
      Application.ScreenUpdating = False

      'создали словарь, собрали уникальные с данными
      With CreateObject("Scripting.Dictionary")
          .comparemode = 1    'текстовое сравнение
          For i = 2 To UBound(a)    'цикл по данным
              t = a(i, 1)    'критерий, тут бы trim() ещё может нужен...
              ' если нет в словаре, добавляем с коллекцией
              If Not .exists(t) Then .Add t, New Collection
              For x = 2 To UBound(a, 2)
                  .Item(t).Add a(i, x)   'в коллекцию критерия добавляем данные
              Next
              m = Application.Max(m, .Item(t).Count)
          Next

          ReDim b(1 To .Count + 1, 1 To m + 1)
          b(1, 1) = a(1, 1)
          x = 0
          For i = 2 To UBound(b, 2) Step 3
          x = x + 1
              b(1, i) = a(1, 2) & x
              b(1, i + 1) = a(1, 3) & x
              b(1, i + 2) = a(1, 4) & x
          Next
          i = 1
          'перебор словаря/коллекций, выгрузка
          For Each el In .keys    'перебор ключей
              i = i + 1
              b(i, 1) = el
              ii = 1    'обнуляем счётчик его строк
              For Each elel In .Item(el)    'цикл по коллекции ключа
                  ii = ii + 1    'счётчик столбцов выгружаемого массива
                  b(i, ii) = elel
              Next
          Next
      End With

      With Workbooks.Add(1)    'создаём книгу
          .Sheets(1).Cells(1).Resize(UBound(b), m + 1) = b  'выгружаем массив
      End With

      Application.ScreenUpdating = True

End Sub
[/vba]
Как-то сложно получилось... Зато быстро.
Правда мыло2 начинается с 1 :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеМакрос. Без обработки ошибки выделения диапазона!
[vba]
Код
Option Explicit

Sub tt()
      Dim a(), i&, ii&, x&, t$, m&, el, elel

      a = Application.InputBox("Выделите исходный диапазон (с шапкой)", "Get Range", Type:=8).Value
      Application.ScreenUpdating = False

      'создали словарь, собрали уникальные с данными
      With CreateObject("Scripting.Dictionary")
          .comparemode = 1    'текстовое сравнение
          For i = 2 To UBound(a)    'цикл по данным
              t = a(i, 1)    'критерий, тут бы trim() ещё может нужен...
              ' если нет в словаре, добавляем с коллекцией
              If Not .exists(t) Then .Add t, New Collection
              For x = 2 To UBound(a, 2)
                  .Item(t).Add a(i, x)   'в коллекцию критерия добавляем данные
              Next
              m = Application.Max(m, .Item(t).Count)
          Next

          ReDim b(1 To .Count + 1, 1 To m + 1)
          b(1, 1) = a(1, 1)
          x = 0
          For i = 2 To UBound(b, 2) Step 3
          x = x + 1
              b(1, i) = a(1, 2) & x
              b(1, i + 1) = a(1, 3) & x
              b(1, i + 2) = a(1, 4) & x
          Next
          i = 1
          'перебор словаря/коллекций, выгрузка
          For Each el In .keys    'перебор ключей
              i = i + 1
              b(i, 1) = el
              ii = 1    'обнуляем счётчик его строк
              For Each elel In .Item(el)    'цикл по коллекции ключа
                  ii = ii + 1    'счётчик столбцов выгружаемого массива
                  b(i, ii) = elel
              Next
          Next
      End With

      With Workbooks.Add(1)    'создаём книгу
          .Sheets(1).Cells(1).Resize(UBound(b), m + 1) = b  'выгружаем массив
      End With

      Application.ScreenUpdating = True

End Sub
[/vba]
Как-то сложно получилось... Зато быстро.
Правда мыло2 начинается с 1 :)

Автор - Hugo
Дата добавления - 01.10.2013 в 16:20
bivilbi Дата: Вторник, 01.10.2013, 17:03 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо большое!

Сейчас попробую!
 
Ответить
СообщениеСпасибо большое!

Сейчас попробую!

Автор - bivilbi
Дата добавления - 01.10.2013 в 17:03
Мир MS Excel » Вопросы и решения » Вопросы по Excel » перенос с использованием макроса (Формулы)
  • Страница 1 из 1
  • 1
Поиск:

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