Отвечаем на вопрос читателя  
Всё об Excel

+В закладки

Обучение Excel

Макросы в Excel

Программирование в Excel

Как в Excel ...?

Об Авторе

Карта сайта

Простой способ создать таблицу в Excel

Горячие клавиши, которые я использую в Excel

Как посчитать сумму в Excel

Показываю, как создать раскрывающийся список в Excel

Создадим раскрывающийся список Excel

Строим графики и диаграммы в Excel

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

Как изменить размер ячейки в Excel (4 способа)

Создаём полезный макрос в Excel

Макросы в Excel это просто

Строим график в Excel

Что такое Excel

Краткая сводка по любимому Excel

Ставим нумерацию листов (страниц) в Excel

Чем открыть dbf

Как построить график в Excel

Прибиваем шапку таблицы в Excel

Ссылки в Excel

Ставим пароли для защиты данных

Будем учиться программировать в Excel

Отвечаем на вопрос читателя

Ускоряем наши макросы в Excel

Объединяем ячейки в Excel

Xls файлы, чем открывать

Как можно создавать таблицы

Что такое dbf

Как в Excel создать книгу доходов и расходов



Вопрос от Ильи. Транспонирование строки в Excel

«В Листе 1 - Диапазон D8:J8 необходимо транспонировать в диапазон B12:B15 без учета пустых ячеек.»

Для решения этой задачи был написан небольшой макрос.

Sub Macro2()

'Чтение из формы

x1y1 = UserForm1.TextBox1.Value

x2y2 = UserForm1.TextBox2.Value

'Небольшой блок проверок

If (x1y1 = "" Or x2y2 = "") Then

MsgBox "Введите данные. Дожно быть, например, '12,2'"

Exit Sub

End If

'"Удаляем" случайные пробелы

x1y1 = Replace(x1y1, " ", "")

x2y2 = Replace(x2y2, " ", "")

'Делим строки вида "12,1", где разделитель ","

arrayx1y1 = Split(x1y1, ",")

arrayx2y2 = Split(x2y2, ",")

'Блоки проверки размеров массива(не больше 3, не ранво 0)

If (UBound(arrayx1y1) = 0 Or UBound(arrayx2y2) = 0) Then

MsgBox "Введите данные. Дожно быть, например, '12,2'"

Exit Sub

End If

If (UBound(arrayx1y1) > 2 Or UBound(arrayx2y2) > 2) Then

MsgBox "Неверный формат данных. Дожно быть, например, '12,2'"

Exit Sub

End If

'Приведение к Целому типу - CInt

x1 = CInt(arrayx1y1(0))

y1 = CInt(arrayx1y1(1))

x2 = CInt(arrayx2y2(0))

y2 = CInt(arrayx2y2(1))

'Цикл по считыванию строки пока не встретим символ "#"

Do While (Cells(x1, y1).Value <> "#"):

If (Cells(x1, y1).Value <> "") Then

'Записываем формулу в вертикальный ряд

Cells(x2, y2).Formula = Cells(x1, y1).Formula

x2 = x2 + 1

End If

y1 = y1 + 1

If (y1 > 200) Then

MsgBox "Ограничение на чтение 200 столбцов"

Exit Sub

End If

Loop

End Sub

Private Sub CommandButton1_Click()

Macro2

End Sub

Private Sub CommandButton2_Click()

Unload Me

End Sub

Запускаем «Start»

Вводим по шаблону (x,y) координаты StartPoint (для считывания горизонтальной строки) и координаты EndtPoint (для записи данных в столбец).

 

Алгоритм:

1. Считываем строку 8 начиная с ячейки («С8»)пока не найдем знак «#» или пока не считаем 200 значений.

2.  Записываем формулы из считанных ячеек в столбец 3(«С») начиная с ячейки «С12»

© 2012 - 2017 Всё об Excel
Яндекс.Метрика