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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.02.2008, 16:16   #1
Deman4eg
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 12
По умолчанию Небольшой вопрос по транспонированию

Добрый день Всем. Имеется небольшая проблема. Имеем два столбца данних которые после транспонирования приобретаю следующий вид:
1,5; 4,33334; 6,5;
2,685; 7,757; 11,635;
и идут они по горизонтали в две строки. Нужно сделать следующее: преобразить две строки данных в один столбец вида:
1,5
2,685

4,33334
7,757

6,5
11,635

при том через кажду пару данных нужно сделать пустую ячейку. Кто нибудь стыкался со схожими задачами? Жду ответов.

Последний раз редактировалось Deman4eg; 20.02.2008 в 16:21.
Deman4eg вне форума
Старый 20.02.2008, 22:00   #2
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Попробуйте так

Код:
Sub Макрос1()
Dim iLastColumn As Long, i As Long, iCol As Long, n As Long
    iLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column 'последний заполненный столбец в 1 ряду
    For n = 1 To iLastColumn
        i = i + 3
        iCol = iCol + 1
        Cells(i, 1) = Cells(1, iCol)
        Cells(i + 1, 1) = Cells(2, iCol)
    Next n
    MsgBox "Done!", vbInformation, ""
End Sub
Pavel55 вне форума
Старый 21.02.2008, 05:30   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

У меня вариан сложнее. Пользуюсь давно. Преобразует колонку значений в таблицу с произвольным направлением и шагом заполнения ячеек.

Исходные данные (значения) должны находиться в колонке 254, начиная с первой строки.

Ячейке (1, 255) указывается из какой строки будет взято первое значение с колонки 254
Ячейка (1, 256) указывает в каком направлении начинать заполнять таблицу. Если в ячейке "V" сначала будут заполняться колонки.
Ячейка (2, 255) указывает на сколько ячеек смещается в горизонтальном направлении каждое следующее значение или колонка
Ячейка (2, 256) указывает сколько должно быть колонок в таблице (значений в ряду)
Ячейка (3, 255) указывает на сколько ячеек смещается в вертикальном направлении каждое следующее значение или ряд
Ячейка (3, 256) указывает сколько должно быть рядов в таблице (значений в колонке)

Начальной ячейкой таблицы является ячейка, в которой находится курсор на момент выполнения макроса.

макрос во вложении.
там на листе подготовлен пример. удачи.
Вложения
Тип файла: rar транспонировать.rar (7.2 Кб, 16 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 21.02.2008, 08:40   #4
Deman4eg
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 12
Хорошо

Цитата:
Сообщение от Pavel55 Посмотреть сообщение
Попробуйте так

Код:
Sub Макрос1()
Dim iLastColumn As Long, i As Long, iCol As Long, n As Long
    iLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column 'последний заполненный столбец в 1 ряду
    For n = 1 To iLastColumn
        i = i + 3
        iCol = iCol + 1
        Cells(i, 1) = Cells(1, iCol)
        Cells(i + 1, 1) = Cells(2, iCol)
    Next n
    MsgBox "Done!", vbInformation, ""
End Sub

Ай красота, ай спасибо большое.
Deman4eg вне форума
Старый 21.02.2008, 08:43   #5
Deman4eg
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
У меня вариан сложнее. Пользуюсь давно. Преобразует колонку значений в таблицу с произвольным направлением и шагом заполнения ячеек.

Исходные данные (значения) должны находиться в колонке 254, начиная с первой строки.

Ячейке (1, 255) указывается из какой строки будет взято первое значение с колонки 254
Ячейка (1, 256) указывает в каком направлении начинать заполнять таблицу. Если в ячейке "V" сначала будут заполняться колонки.
Ячейка (2, 255) указывает на сколько ячеек смещается в горизонтальном направлении каждое следующее значение или колонка
Ячейка (2, 256) указывает сколько должно быть колонок в таблице (значений в ряду)
Ячейка (3, 255) указывает на сколько ячеек смещается в вертикальном направлении каждое следующее значение или ряд
Ячейка (3, 256) указывает сколько должно быть рядов в таблице (значений в колонке)

Начальной ячейкой таблицы является ячейка, в которой находится курсор на момент выполнения макроса.

макрос во вложении.
там на листе подготовлен пример. удачи.

Для такой простой задачи больно мудрено, но идея интересна. Пригадицца. Спасибо.
Deman4eg вне форума
Старый 21.02.2008, 09:38   #6
Deman4eg
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 12
По умолчанию

Ребята и вопрос на засыпку, имеем таблицу в которой есть обединенные ячейки 3 в 1, в столбце, нужно вставить туда данные из базы но что б одна запись на одну обединенную ячейку, записи в базе идут в столбец одна за другой и соотвественно, то ругается на невозможность вставки в обединенную ячейку то лезут по три штуки в ячейку.
Deman4eg вне форума
Старый 21.02.2008, 09:45   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А Вы делайте не копированием и вставкой, а просто, например
Код:
Sheets(1).Range("A1") = Sheets(2).Range("B2")
Для конкретного ответа приведите конкретный пример.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 21.02.2008, 10:17   #8
Deman4eg
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
А Вы делайте не копированием и вставкой, а просто, например
Код:
Sheets(1).Range("A1") = Sheets(2).Range("B2")
Для конкретного ответа приведите конкретный пример.
Пример. Имеем набор данных
1 а
2 б
3 в
4 г
5 д
6 е
7 ж
8 з

и есть таблица с обединенными ячейками 3 в 1. Нужно набор данных с 1-8 вставить в столбец к примеру А, а данные с а-з вставить в столбец В, но что б вышло 1 вставляется в одну обединенную ячейку 3-1, 2 в следующую и т.д.
Deman4eg вне форума
Старый 21.02.2008, 10:41   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите один из возможных примеров (вложение). Можно сделать и при несистематизированном объединении ячеек, но это чуть сложнее, а самое главное медленнее. Что касается вставки в столбец "B" - я не понял. Не экономьте слова, чтобы сэкономить время.
Вложения
Тип файла: rar Deman4eg.rar (6.1 Кб, 19 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 21.02.2008 в 10:45.
SAS888 вне форума
Старый 21.02.2008, 10:47   #10
Deman4eg
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
А Вы делайте не копированием и вставкой, а просто, например
Код:
Sheets(1).Range("A1") = Sheets(2).Range("B2")
Для конкретного ответа приведите конкретный пример.
Пример. Имеем набор в столбце данных:
Петров Петр Петрович
Иванов Иван Иванович
Сидорович Сидор Сидорович
так как таблица имеет формулы и сложную структуру менять ее нельзя, а вбивать данные ( в данном примере фамилии) нужно руками или копировать-вставить, но данные в .дбф базе идут подряд, а в таблице ячейка для ввода фамилии обединена в 3 строки. При копировать вставить лезет по три фамилии в ячейку, а требуется одну, и что б следуюющая фамилия шла в следуюущую обединенную ячейку и т.д.
Deman4eg вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Небольшой этический вопросик о классах. Longedok Помощь студентам 2 04.08.2008 13:23
Небольшой курсовой проект (Assembler) slaider Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 17 10.03.2008 18:59