Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как сделать один список из двух разных столбцов, Запятые и столбцы
 
Здравствуйте, такое дело -есть два столбца, значению А1 соответсвует значение В1, А2 соответствует В2 и так вниз. Как сделать так, чтобы все эти значения были в таком формате: (желательно чтоб все это было в одной ячейке) А1, В2, А2, В2, А3, В3 и т.д. при это м чтобы можно было просто эту ячейку скопировать и получился бы список значений, т.е. 0,56,1,98,2,117....
 
Сразу два нарушения:
1. Название темы ни о чём. Предложите новое - я исправлю.
2. Отображаемое имя с нарушением правил. Исправьте сами в своём профиле.
 
Вы хотите все ячейки по 2 столбцам засунуть в одну? Тогда, мне кажется, лучше UDF:
Код
Function tt(Rng As Range)
Dim S
If Rng.Rows.Count = 0 Then Or Rng.Columns.Count <> 2 Then Exit Function
S = Cells(1, 1) & ", " & Cells(1, 2)
For I = 1 To Rng.Rows.Count
If S = "" Then
S = Cells(I, 1) & ", " & Cells(I, 2)
Else: S = S & Cells(I, 1) & ", " & Cells(I, 2)
End If
Next I
tt = S
End Function
 

 
МВТ,а это нормально, что вот эта строка:
Код
IfRng.Rows.Count = 0 ThenOrRng.Columns.Count <> 2 ThenExitFunction
подсветилась красным и еще) до этого я думал, не сталкивался с такими вещами, поэтому вопрос, мне нужно ввести первую ячейку из первого столбца и из второгого первую?
 
или так
 
МВТ, так правильнее. В вашем варианте, если столбцы будут не А и В, то ошибка
Код
Function tt(Rng As Range)
Dim S, I, Ar()
Ar = Rng.Value
If Rng.Columns.Count <> 2 Then Exit Function 'проверка, что столбцов 2, можно и убрать

For I = 1 To Rng.Cells.Count
    If Len(Rng(I)) <> 0 Then
                S = S & Rng(I) & ", " ' собираем непустые ячейки слева направо, сверху вниз
    End If
Next I
tt = IIf(Len(S) > 0, Left(S, Len(S) - 2), "") ' обрезаем последний разделитель ", "
End Function
Изменено: Максим Зеленский - 13 Мар 2015 10:34:10 (комментарии к коду)
F1 творит чудеса
 
Безусловно всем спасибо)) не думал, что так быстро ответят. Только как сделать, чтобы все было запятыми? Можно сделать конечно из через замену CTRL+H? но больше интересует, как сделать это програмно А то там точка с запятой проскальзывает), И не подскажете, где об этом можно почитать? В уроках смотрел, немного не то
Изменено: UNikolai - 13 Мар 2015 13:07:24
 
Цитата
UNikolai написал:
там точка с запятой проскальзывает
не понял, где она появляется? в коде нет точки с запятой, она может быть только в исходных данных.
F1 творит чудеса
Страницы: 1
Читают тему (гостей: 1)