Страницы: 1
RSS
Как из таблицы на 3 столбца перенести данные в один столбец
 
1. Есть столбец A с цифрами от 1 до 20
2. Есть столбец B с цифрами от 21 до 40
3. Есть столбец C с цифрами от 41 до 60

Надо получить столбец D с цифрами от 1 до 60

P/S Сам пытался найти, но все варианты запросов "как из 2 столбцов сделать 1" ведут на всевозможные вариации сцепить, а это ни то, что нужно.
 
D.Frolov, Редизайнер
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
=НАИМЕНЬШИЙ($A$1:$C$20,СТРОКА(A1))
Изменено: memo - 04.05.2021 11:30:42 (Добавил файл)
 
Надо получить столбец D с цифрами от 1 до 60 =строка(A1)
И протянуть вниз
 
Цитата
D.Frolov написал:
Как из 3 стобцов сделать 1?,
вааще на этот вопрос ответ - удалить два из трех  :D
По вопросам из тем форума, личку не читаю.
 
Цитата
vikttur написал: =строка(A1)
Видимо неправильно я описал задачу

Пусть там буквы
а
б
в

г
д
е

ж
з
и
 
D.Frolov,  из двумерного массива в одномерный преобразование идет через кратность количества столбцом и строк, в зависисмочти что нужно получить
=INDEX(A:C;MOD(ROW()-1;COUNT(A:A))+1;INT((ROW()-1)/COUNTA(A:A))+1)
Изменено: БМВ - 04.05.2021 11:52:38
По вопросам из тем форума, личку не читаю.
 
Еще вариант через PQuery не через объединение, а через Добавить запросы.
Пример во вложении
 
 
D.Frolov, еще вариант...
Код
Sub mrshkei()
Dim arr, arr2, i As Long, n As Long, rng As Range, rng2 As Range
Set rng = Application.InputBox("Выберите данные для объедения в 1 столбец (обычным выделением с первой заполненной ячейки до последней)", Type:=8)
arr = rng
ReDim arr2(1 To (UBound(arr, 2) - LBound(arr) + 1) * UBound(arr), 1 To 1): K = 1
    For n = LBound(arr) To (UBound(arr, 2) - LBound(arr) + 1)
    For i = LBound(arr) To UBound(arr)
        If arr(i, n) <> Empty Then arr2(K, 1) = arr(i, n): K = K + 1
    Next i
    Next n
Set rng2 = Application.InputBox("Выберите одну ячейку куда вывести результат (от нее и вниз)", Type:=8)
rng2.Resize(UBound(arr2), 1) = arr2
End Sub

Не бойтесь совершенства. Вам его не достичь.
 
Все спасибо за ответа - БМВ, vikttur, Mershik, memo

Пока ждал полез и "наколкозил" сторонними средствами:)

З,Ы Всем спасибо еще раз, все разберу все пригодится.
 
Цитата
D.Frolov написал: Видимо неправильно я описал задачу. Пусть там буквы
Опять неправильно :)
=СИМВОЛ(СТРОКА(A224))
 
Цитата
Надо получить столбец D с цифрами от 1 до 60
В столбец, отстоящий на два столбца от массива
Код
Sub OneColumn()
Dim arr
Dim arr1
Dim i As Long
Dim j As Long
  arr = Range("A1").CurrentRegion.Value
  ReDim arr1(1 To UBound(arr) * UBound(arr, 2), 1 To 1)
  For j = 1 To UBound(arr, 2)
    For i = 1 To UBound(arr)
      arr1(i + (j - 1) * UBound(arr), 1) = arr(i, j)
    Next
  Next
  Cells(1, UBound(arr, 2) + 2).Resize(UBound(arr) * UBound(arr, 2)) = arr1
End Sub
 
Цитата
vikttur написал: СТРОКА(A224)
:D
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх