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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2017, 18:16   #1
katFOX
 
Регистрация: 03.02.2017
Сообщений: 4
По умолчанию Как перенести значения нескольких полей в одно поле?

Помогите, пожалуйста. Нужно перенести значения полей в одно поле. Пример (было-стало) во вложении.
Как это сделать?
katFOX вне форума Ответить с цитированием
Старый 04.02.2017, 19:12   #2
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

Так вы уже перенесли.
Может быть вам формула нужна или функция для этих действий?
Алексей М.
AlexM12 вне форума Ответить с цитированием
Старый 04.02.2017, 20:16   #3
katFOX
 
Регистрация: 03.02.2017
Сообщений: 4
По умолчанию

Нам нужно либо это либо то
В нашем примере 2 случая, а в оригинале таких случаев за тысячу...
Не хочется вручную каждый проходить
katFOX вне форума Ответить с цитированием
Старый 04.02.2017, 22:40   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

варианты.
Код:
Function MyConcat(startCel As Range) As Variant
    Dim rng As Range
    Dim ar() As Variant
    Dim output As Variant
    Dim tmp As Variant
    On Error GoTo er
    Set rng = Range(startCel.Offset(0, 1), startCel.Offset(0, 1).End(xlDown))
    
    ar = rng.Value
    If UBound(ar) > 20 Then ReDim Preserve ar(20)
    For Each tmp In ar
        output = output & tmp & ", "
    Next
' czy są możliwo to zrobic przez JOIN? nie wiem dlaczego nie chodzi to teraz.
    
    MyConcat = Left(output, Len(output) - 2)
    Exit Function
er:
    MyConcat = ""
End Function

Function MyConcat2(startCel As Range) As Variant
    Dim output As Variant
    Dim r As Long
    On Error GoTo er
    r = 0
    output = ""
    Do While startCel.Offset(r, 1) <> ""
        output = output & startCel.Offset(r, 1) & ", "
        r = r + 1
    Loop
    If output = "" Then GoTo er
    MyConcat2 = Left(output, Len(output) - 2)
    Exit Function
er:
    MyConcat2 = ""
End Function
вызывать
Код:
=MyConcat(B1)
Код:
=MyConcat2(B1)
Код:
=MyConcat(B7)
Код:
=MyConcat2(B7)
upd
Код:
Function MyConcat3(startCel As Range)
    On Error GoTo er
    MyConcat3 = Join(WorksheetFunction.Transpose( _
                Range(startCel.Offset(0, 1), _
                startCel.Offset(0, 1).End(xlDown)).Value), ", ")
    Exit Function
er:
    MyConcat3 = ""
    
End Function
как обработать вызов
Код:
=MyConcat(H2)
или 3, чтобы не получить в результате
Цитата:
текст1,текст2,текст3, , , , , текст4,текст5
?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 04.02.2017 в 23:44.
Aleksandr H. вне форума Ответить с цитированием
Старый 05.02.2017, 00:14   #5
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

Почти то же самое.
Код:
Function Join_V(iCells As Range) As String
    Dim Arr
    If iCells.Offset(0, 1) = Empty Then Join_V = "": Exit Function
    Arr = Range(iCells.Offset(0, 1), iCells.Offset(0, 1).End(xlDown))
    Join_V = Join(Application.Transpose(Arr), ",")
End Function
Алексей М.
AlexM12 вне форума Ответить с цитированием
Старый 05.02.2017, 17:07   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Если быть дотошным - то перенос можно сделать или вручную, или макросом, но никак не формулой - формулы этого не могут, они только отображают результат обработки данных, никак их не изменяя!
Если кто не понял - почитайте значение слова "перенос" в ВИКИ, вроде пока оно официально не изменено
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.02.2017, 18:33   #7
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

Игорь, ты прав, но не любители макросов после "переноса" могут копировать в ставить специальной вставкой "значения", чем добьются настоящего переноса данных.
Алексей М.
AlexM12 вне форума Ответить с цитированием
Старый 06.02.2017, 20:36   #8
katFOX
 
Регистрация: 03.02.2017
Сообщений: 4
По умолчанию

Спасибо большое! А подскажите, пожалуйста, как это теперь применить на нашем фале?
Впервые с этим сталкиваюсь(
katFOX вне форума Ответить с цитированием
Старый 06.02.2017, 21:00   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Цитата:
Сообщение от AlexM12 Посмотреть сообщение
не любители макросов после "переноса" могут копировать в ставить специальной вставкой
Ну да, сперва спецпрокопипастить результат, потом выискать глазами источник и его удалить, частями в данном случае, или убить на это немеряно времени если например "переносили" используя ВПР().

Ответ на вопрос "как применить" - погуглите "использование UDF в Экселе".
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 06.02.2017, 22:02   #10
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
сперва спецпрокопипастить результат, потом выискать глазами источник и его удалить, частями в данном случае, или убить на это немеряно времени
Выделить диапазон значений, полученных формулой - копировать - не снимая выделение нажать правую кнопку мыши - специальная вставка - значения - Ок.
Немерено - это не более 2 сек.
Алексей М.
AlexM12 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В одно поле отчета вывести несколько полей таблицы. VBA Access 7.0 чувачек Microsoft Office Access 5 17.07.2013 16:19
Вычисление среднего значения из нескольких полей одной записи yellowviolet Microsoft Office Access 4 16.11.2011 22:55
как изменить только одно поле в БД. Делфи. FACE OFF Помощь студентам 0 24.09.2010 20:21
Как в QRepopt отображать одно и тоже поле в нескольких колонках? Milishka БД в Delphi 2 19.04.2010 14:37
Данные из двух полей исх. таблицы в одно поле сводной таблицы Strelec79 Microsoft Office Excel 2 02.08.2009 13:59