Несколько столбцов в один excel макрос

Многократное объединение отдельных групп ячеек в столбцах вручную – требует много времени и сил. Поэтому рационально будет воспользоваться макросом, который автоматически выполнит всю эту, плюс еще и дополнительную работу.

Как объединить 2 и несколько столбцов в таблице Excel

Допустим, что мы имеем таблицу содержащую данные оп договорам и выставленных на их основе счетов. Данные по договорам находиться в столбцах D, E и F, но некоторые фактуры взяты с других подчиненных документов, а не из договора. Для таких случаев в столбце D указывается номер договора или описание подчиненного документа для каждой фактуры.

данные оп договорам.

Нам необходимо объединить ячейки в этих трех столбцах (D, E и F) таким образом, чтобы для каждой строки где нет договоров была одна объединенная ячейка.

Откроем редактор Visual Basic (ALT+F11):

Visual Basic.

И вставим новый стандартный модуль используя инструмент в редакторе: «Insert»-«Module». А после чего запишем в модуль VBA код макроса для объединения ячеек столбцов по горизонтали:

Sub ObedinitGorizontal()
Dim i As Long
Dim j As Long
Dim savetext As String
Application.DisplayAlerts = False
For i = 1 To Selection.Rows.Count
  savetext = Selection.Cells(i, 1)
  For j = 2 To Selection.Columns.Count
    savetext = savetext & Chr(32) & Selection.Cells(i, j)
  Next
  Selection.Rows(i).Merge
  Selection.Cells(i, 1) = savetext
  Selection.Cells(i, 1).HorizontalAlignment = xlHAlignCenter
Next
Application.DisplayAlerts = True
End Sub

Код VBA.

В первом цикле данного кода выполняется прогон по отдельных строках выделенного диапазона, а во втором объединяться значения столбцов в Excel. Тексты между собой разделяться символом пробела, его код в таблице символом ASCII имеет номер 32.

В конце выполнения первого цикла VBA кода мы изменяем свойство HorizontalAlignment для объединенной ячейки, что позволяет выровнять текст по центру с помощью макроса.

Если мы хотим объединить ячейки в строках содержащих информацию о выставленных счетах без подчиненных договоров, выделяем диапазон ячеек D5:F7 и запускаем наш макрос: «РАЗРАБОТЧИК»-«Код»-«Макросы». В появившемся диалоговом окне выбираем имя нашего макроса «ObedinitGorizontal» и нажимаем на кнопку «Выполнить». А далее снова выделяем диапазон ячеек D9:F11 и вновь запускаем макрос «ObedinitGorizontal». В результате ячейки будут объединены как показано ниже на рисунке:

В результате объединены ячейки.

Внимание! Если объединяемые ячейки будут содержать формулы, то они могут быть утеряны так как в процессе объединения формулы преобразуются в интерпретированный текст.



Модификация и настройка кода макроса

Если мы хотим разделять тексты не пробелом, а вертикальной линией, тогда нужно просто изменить ASCII код в аргументе функции Chr() на 124:

savetext = savetext & Chr(124) & Selection.Cells(i, j)

Если в объединенных ячейках мы хотим вставлять только тексты из первого столбца (D), без текстов, записанных в остальных двух столбцах E и F тогда удалите или закомментируйте переменную j и код второго цикла:

закомментируйте переменную j и код .

Как объединить ячейки по столбцам в Excel

Если мы хотим выполнить макрос одновременно и сразу для нескольких выделенных диапазонов ячеек (с помощью удержания клавиши CTRL на клавиатуре), добавим еще одну переменную:

Dim k As Long

Перед первым циклом добавим строку для начала нового цикла прохода по всех выделенных диапазонах:

For k = 1 To Selection.Areas.Count

В конце первого цикла не забудьте добавить конце для нового цикла:

Next

Кроме этого для всех элементов объекта Selection следует добавить ссылку на диапазон: Selection.Areas(k). Полная версия VBA кода модифицированного макроса выглядит следующим образом:

Sub ObedinitGorizontal()
Dim i As Long
Dim j As Long
Dim k As Long
Dim savetext As String
Application.DisplayAlerts = False
For k = 1 To Selection.Areas.Count
  For i = 1 To Selection.Areas(k).Rows.Count
    savetext = Selection.Areas(k).Cells(i, 1)
    For j = 2 To Selection.Areas(k).Columns.Count
      savetext = savetext & Chr(32) & Selection.Areas(k).Cells(i, j)
    Next
    Selection.Areas(k).Rows(i).Merge
    Selection.Areas(k).Cells(i, 1) = savetext
    Selection.Areas(k).Cells(i, 1).HorizontalAlignment = xlHAlignCenter
  Next
Next
Application.DisplayAlerts = True
End Sub

Читайте также: Как разъединить объединенные ячейки в Excel используя макрос.

Если хотите узнать как объединить строки в Excel, читайте статью: макрос для объединения строк в таблице.

Если бы мы не изменили код, то даже при многократном выделении диапазонов с нажатой клавишей CTRL все строки объединились бы в одну ячейку, что не есть хорошо.

 

bishop

Пользователь

Сообщений: 6
Регистрация: 23.09.2016

Помогите сделать следующее:
есть три столбца со значениями:    
a  b  c
d  e  f
x  y  z

Нужно преобразовать их в один столбец, но чтобы значения, стоявшие на одной строке, встали друг под другом в том же порядке, например:
a
b
c
d
e
f
x
y
z

Надеюсь понятно объяснил.
Очень нужна помощь! Помогите.

Прикрепленные файлы

  • primer.xls (14.5 КБ)

Изменено: bishop23.09.2016 11:10:59

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

Ввели в C9 и протянули вниз:
=ИНДЕКС($A$1:$D$3;ЦЕЛОЕ((СТРОКА()-СТРОКА($8:$8)-1)/ЧИСЛСТОЛБ($A$1:$D$3))+1;ОСТАТ((СТРОКА()-СТРОКА($8:$8)-1);ЧИСЛСТОЛБ($A$1:$D$3))+1)

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

bishop

Пользователь

Сообщений: 6
Регистрация: 23.09.2016

Класс! Спасибо за скорость и помощь!

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

 

bishop

Пользователь

Сообщений: 6
Регистрация: 23.09.2016

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

А Вы, пжлст, не жмите кнопку цитирования, когда нужно просто ответить.

 

МатросНаЗебре

Пользователь

Сообщений: 5516
Регистрация: 05.02.2014

#7

23.09.2016 11:57:21

Код
Sub СтрокиВСтолбец()

    Dim cl As Range
    Dim s As String
    Dim arr
    
    With ActiveSheet
        For Each cl In .UsedRange.Cells
            If cl.Text <> "" Then
                s = s & " " & cl.Text
            End If
        Next
        arr = Split(s)
    End With

    Workbooks.Add
    Cells(1).Resize(UBound(arr) - 1) = WorksheetFunction.Transpose(arr)
    
End Sub

Прикрепленные файлы

  • Книга1.xlsm (17.57 КБ)

 

bishop

Пользователь

Сообщений: 6
Регистрация: 23.09.2016

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

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

 

Пока не понимаю, что не так?

Результат совпадает с ТЗ.
Пример прикладываю.

Прикрепленные файлы

  • primer.xlsm (10.75 КБ)

 

bishop

Пользователь

Сообщений: 6
Регистрация: 23.09.2016

Юрий М, все идеально! Вы меня очень выручили и избавили от долгой рутинной работы.
Тема закрыта, всем спасибо!

 

МатросНаЗебре

Пользователь

Сообщений: 5516
Регистрация: 05.02.2014

#12

23.09.2016 12:17:18

Это сообщение не является ответом на

Цитата
bishop написал: Вы немного не так сделали.

С этим ещё буду разбираться.

Поправил ошибку.

Цитата
Нужно заменить
Cells(1).Resize(UBound(arr) — 1) = WorksheetFunction.Transpose(arr)
на
Cells(1).Resize(UBound(arr) + 1) = WorksheetFunction.Transpose(arr)
 

bishop

Пользователь

Сообщений: 6
Регистрация: 23.09.2016

#13

23.09.2016 12:17:38

МатросНаЗебре, вам спасибо большое, ваш вариант тоже пригодится в хозяйстве.

0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 9

1

Соединить несколько столбцов в один!

10.06.2016, 09:02. Показов 8888. Ответов 22


Студворк — интернет-сервис помощи студентам

Есть задачка, ответа на нее нормального и рабочего не могу найти 3-ий день уже! Одни макросы с ошибками другие не так как надо делают и т.д.
В прикрепленном файле необходимо все данные из столбцов соединить в один столбец друг за другом!
Если Вам несложно, те которые разбираются в этом, уважаемые объяснить «нубу» как это сделать! Если вы решите эту задачку то пожалуйста объясните этот способ!



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

10.06.2016, 09:05

2

Есть такие функции как СЦЕПИТЬ и СЖПРОБЕЛЫ — используйте. Ну можно конечно и макрос написать, но зачем?



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

10.06.2016, 09:20

3



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

10.06.2016, 09:31

4

Ну наконец-то сподобились



0



0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 9

10.06.2016, 09:36

 [ТС]

5

Да какие нафиг сцепить! Они мне не нужны сцепленные! Просто вниз их перенести под первый столбец, все остальные столбцы!

Добавлено через 56 секунд
Опять же мне не надо сцеплять их!



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

10.06.2016, 09:43

6

Ну так почему! В примере! Нет примера!



0



0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 9

10.06.2016, 09:50

 [ТС]

7

Цитата
Сообщение от Abilok
Посмотреть сообщение

В прикрепленном файле необходимо все данные из столбцов соединить в один столбец друг за другом!

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Ну так почему! В примере! Нет примера!



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

10.06.2016, 09:52

8

Можно ведь было в том файле дать 10 строк исходных данных и рядом/ниже/какугодно показать в понятном виде какой результат нужен — всем бы сэкономили кучу букв ответов…



0



0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 9

10.06.2016, 10:14

 [ТС]

9

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Можно ведь было в том файле дать 10 строк исходных данных и рядом/ниже/какугодно показать в понятном виде какой результат нужен — всем бы сэкономили кучу букв ответов…

Не я правда туда попал?!

Цитата
Сообщение от Abilok
Посмотреть сообщение

все данные из столбцов соединить в один столбец друг за другом!



0



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

10.06.2016, 10:24

10

Лучший ответ Сообщение было отмечено Abilok как решение

Решение

Abilok, Тестируйте … на кошках (c)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Test()
    Dim iSource As Range, iCount&, iArr, tmp
 
    Set iSource = ActiveSheet.UsedRange
    ReDim iArr(1 To Application.CountA(iSource))
 
    For Each tmp In iSource.Value
        If Not IsEmpty(tmp) Then
           iCount = iCount + 1
           iArr(iCount) = tmp
        End If
    Next
 
    iSource.Clear
    iSource(1).Resize(iCount) = Application.Transpose(iArr)
End Sub



2



Hugo121

6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

10.06.2016, 10:30

11

Цитата
Сообщение от Abilok
Посмотреть сообщение

Не я правда туда попал?!

— это смотря куда собирались попасть
Пример непонятный — вот откуда взялось
гибдд
билеты
билеты
билеты
сайт
официальный

Но может так подойдёт?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub tt()
Dim a, i&, ii&, x&
a = Sheets(1).[b1].CurrentRegion.Value
For ii = 1 To UBound(a, 2)
For i = 1 To UBound(a, 1)
If Len(Trim(a(i, ii))) Then
x = x + 1
Sheets(2).Cells(x, 1) = a(i, ii)
End If
Next
Next
End Sub



0



0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 9

10.06.2016, 10:36

 [ТС]

12

Цитата
Сообщение от Hugo121
Посмотреть сообщение

— это смотря куда собирались попасть
Пример непонятный — вот откуда взялось
гибдд
билеты
билеты
билеты
сайт
официальный

Это правда важно?

Добавлено через 22 секунды

Цитата
Сообщение от pashulka
Посмотреть сообщение

Abilok, Тестируйте … на кошках (c)

Что еще за кошки?)



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

10.06.2016, 10:36

13

Цитата
Сообщение от Abilok
Посмотреть сообщение

Это правда важно?

Вам виднее — иногда бывает даже очень важно.



0



876 / 555 / 291

Регистрация: 21.11.2012

Сообщений: 1,551

10.06.2016, 10:40

14

Abilok,

вы, видимо, сами не туда попали. в представленном вами примере нет какой-то зависимости. исходя из вашего описания к поставленной задаче следует, что вы хотите из столбцов
A B C
A B C

получить:
A
A
B
B
C
C

но в вашем примере «объединение» вообще не понятно по какому принципу сливаются столбцы. сначала берется первый. далее хз

просто даже тупой тест, выделить все заполненные ячейки на исходном листе — показывает 574 заполненных, на втором — 282.

Вы либо научитесь правильно формулировать вопросы, либо разбирайтесь в своем мусоре сами



0



0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 9

10.06.2016, 10:53

 [ТС]

15

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Sub tt()
Dim a, i&, ii&, x&
a = Sheets(1).[b1].CurrentRegion.Value
For ii = 1 To UBound(a, 2)
For i = 1 To UBound(a, 1)
If Len(Trim(a(i, ii))) Then
x = x + 1
Sheets(2).Cells(x, 1) = a(i, ii)
End If
Next
Next
End Sub

Этот с ошибкой какой то…

Добавлено через 6 минут

Цитата
Сообщение от hamin
Посмотреть сообщение

вы, видимо, сами не туда попали. в представленном вами примере нет какой-то зависимости. исходя из вашего описания к поставленной задаче следует, что вы хотите из столбцов
A B C
A B C
получить:
A
A
B
B
C
C
но в вашем примере «объединение» вообще не понятно по какому принципу сливаются столбцы. сначала берется первый. далее хз
просто даже тупой тест, выделить все заполненные ячейки на исходном листе — показывает 574 заполненных, на втором — 282.
Вы либо научитесь правильно формулировать вопросы, либо разбирайтесь в своем мусоре сами

Вам либо заняться нечем, либо вы просто строите сидя здесь из себя что то понимающее!
Сделать все вручную видимо легче будет, если я буду в примерах показывать полностью сделанную конечную работу, задачу, смысл мне лезть на форумы???!
Что сложного понять чтобы сделать каждый столбец в один столбец друг под другом???

Цитата
Сообщение от hamin
Посмотреть сообщение

A B C
A B C
получить:
A
A
B
B
C
C

Что сложного для Вас, если вы понимающие в этом люди?
Какой от Вас толк если вы сидите и не можете поделиться ни с кем своими знаниями, а только можете раскритиковать и назвать мусором?!

Добавлено через 5 минут

Цитата
Сообщение от pashulka
Посмотреть сообщение

Abilok, Тестируйте … на кошках (c)
Visual BasicВыделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Test()
* * Dim iSource As Range, iCount&, iArr, tmp
Set iSource = ActiveSheet.UsedRange
* * ReDim iArr(1 To Application.CountA(iSource))
For Each tmp In iSource.Value
* * * * If Not IsEmpty(tmp) Then
* * * * * *iCount = iCount + 1
* * * * * *iArr(iCount) = tmp
* * * * End If
* * Next
iSource.Clear
* * iSource(1).Resize(iCount) = Application.Transpose(iArr)
End Sub

Уважаемый, pashulka! А как Вам удалось понять мой вопрос?



0



876 / 555 / 291

Регистрация: 21.11.2012

Сообщений: 1,551

10.06.2016, 10:53

16

Abilok,

Что сложного для Вас, если вы понимающие в этом люди?
Какой от Вас толк если вы сидите и не можете поделиться ни с кем своими знаниями, а только можете раскритиковать и назвать мусором?!

а вы объясните людям что вам надо, а в вашем примере, который вы написали, все выглядит так:
хочу из столбца
A B C
A B C

получить

A
C
B
H



0



0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 9

10.06.2016, 10:56

 [ТС]

17

Цитата
Сообщение от hamin
Посмотреть сообщение

Abilok,
Что сложного для Вас, если вы понимающие в этом люди?
Какой от Вас толк если вы сидите и не можете поделиться ни с кем своими знаниями, а только можете раскритиковать и назвать мусором?!
а вы объясните людям что вам надо, а в вашем примере, который вы написали, все выглядит так:
хочу из столбца
A B C
A B C
получить
A
C
B
H

Прощайте, hamin!



0



414 / 262 / 82

Регистрация: 27.10.2012

Сообщений: 860

10.06.2016, 11:44

18

Не по теме:

Abilok, кое-где (не скажу где) уже бан бы схлопотали, а тут люди ещё и отвечают

.



0



0 / 0 / 0

Регистрация: 10.06.2016

Сообщений: 9

10.06.2016, 11:49

 [ТС]

19

kalbasiatka, Что я написал не так как надо кому то?



0



414 / 262 / 82

Регистрация: 27.10.2012

Сообщений: 860

10.06.2016, 11:59

20

Элементарная вежливость должна быть. Ни кто вам ни чего не обязан.
Уже после этого нормальный человек прошёл бы мимо темы.



0



I have multiple lists that are in separate columns in excel. What I need to do is combine these columns of data into one big column. I do not care if there are duplicate entries, however I want it to skip row 1 of each column.

Also what about if ROW1 has headers from January to December, and the length of the columns are different and needs to be combine into one big column?

ROW1| 1   2   3    
ROW2| A   D   G    
ROW3| B   E   H    
ROW4| C   F   I

should combine into

A    
B    
C    
D    
E    
F    
G    
H    
I

The first row of each column needs to be skipped.

Community's user avatar

asked Jun 4, 2010 at 20:40

Akib's user avatar

Try this. Click anywhere in your range of data and then use this macro:

Sub CombineColumns()
Dim rng As Range
Dim iCol As Integer
Dim lastCell As Integer

Set rng = ActiveCell.CurrentRegion
lastCell = rng.Columns(1).Rows.Count + 1

For iCol = 2 To rng.Columns.Count
    Range(Cells(1, iCol), Cells(rng.Columns(iCol).Rows.Count, iCol)).Cut
    ActiveSheet.Paste Destination:=Cells(lastCell, 1)
    lastCell = lastCell + rng.Columns(iCol).Rows.Count
Next iCol
End Sub

answered Jun 5, 2010 at 13:15

Alex P's user avatar

Alex PAlex P

12.2k5 gold badges51 silver badges69 bronze badges

3

You can combine the columns without using macros. Type the following function in the formula bar:

=IF(ROW()<=COUNTA(A:A),INDEX(A:A,ROW()),IF(ROW()<=COUNTA(A:B),INDEX(B:B,ROW()-COUNTA(A:A)),IF(ROW()>COUNTA(A:C),"",INDEX(C:C,ROW()-COUNTA(A:B)))))

The statement uses 3 IF functions, because it needs to combine 3 columns:

  • For column A, the function compares the row number of a cell with the total number of cells in A column that are not empty. If the result is true, the function returns the value of the cell from column A that is at row(). If the result is false, the function moves on to the next IF statement.
  • For column B, the function compares the row number of a cell with the total number of cells in A:B range that are not empty. If the result is true, the function returns the value of the first cell that is not empty in column B. If false, the function moves on to the next IF statement.
  • For column C, the function compares the row number of a cell with the total number of cells in A:C range that are not empty. If the result is true, the function returns a blank cell and doesn’t do any more calculation. If false, the function returns the value of the first cell that is not empty in column C.

TylerH's user avatar

TylerH

20.6k64 gold badges76 silver badges97 bronze badges

answered Dec 3, 2014 at 8:25

CristinaP's user avatar

CristinaPCristinaP

3063 silver badges6 bronze badges

0

Not sure if this completely helps, but I had an issue where I needed a «smart» merge. I had two columns, A & B. I wanted to move B over only if A was blank. See below. It is based on a selection Range, which you could use to offset the first row, perhaps.

Private Sub MergeProjectNameColumns()
    Dim rngRowCount As Integer
    Dim i As Integer

    'Loop through column C and simply copy the text over to B if it is not blank
    rngRowCount = Range(dataRange).Rows.Count
    ActiveCell.Offset(0, 0).Select
    ActiveCell.Offset(0, 2).Select
    For i = 1 To rngRowCount
        If (Len(RTrim(ActiveCell.Value)) > 0) Then
            Dim currentValue As String
            currentValue = ActiveCell.Value
            ActiveCell.Offset(0, -1) = currentValue
        End If
        ActiveCell.Offset(1, 0).Select
    Next i

    'Now delete the unused column
    Columns("C").Select

    selection.Delete Shift:=xlToLeft
End Sub

answered Jun 4, 2010 at 20:49

Steven Dorfmeister's user avatar

Function Concat(myRange As Range, Optional myDelimiter As String) As String 
  Dim r As Range 
  Application.Volatile 
  For Each r In myRange 
    If Len(r.Text) Then 
      Concat = Concat & IIf(Concat <> "", myDelimiter, "") & r.Text 
    End If 
  Next 
End Function

answered Jun 4, 2010 at 21:01

Mark Baker's user avatar

Mark BakerMark Baker

208k31 gold badges340 silver badges383 bronze badges

макрос объединения столбцов в один построчно

Ilsur

Дата: Среда, 23.11.2016, 23:34 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Доброго времени суток! Суть проблемы такая:
Имеется файл с таблицей с указанием в столбцах наименования товара, производитель, единица измерения. Нужно объединить эти 3 столбца в один построчно. Я так думаю макросом. Примерный код я нашел, но он при выделении нескольких строк обьеденяет все ячейки в одну. Вот он:
[vba]

Код

Sub MergeCell()
Const sDELIM As String = » «
Dim rCell As Range
Dim sMergeStr As String
If TypeName(Selection) <> «Range» Then Exit Sub
With Selection
For Each rCell In .Cells
sMergeStr = sMergeStr & sDELIM & rCell.Text
Next rCell
Application.DisplayAlerts = False
.Merge Across:=False
Application.DisplayAlerts = True
.Item(1).Value = Mid(sMergeStr, 1 + Len(sDELIM))
End With

End Sub

[/vba]

Может тут что-то нужно изменить, чтобы при выделении всех значений 3 столбцов — обьединение произошло построчно. Прикрепляю файл с этими тремя столбцами. Заранее Спасибо!

К сообщению приложен файл:

6207947.xls
(58.0 Kb)


с благодарностью Ilsur

Сообщение отредактировал IlsurСреда, 23.11.2016, 23:36

 

Ответить

_Boroda_

Дата: Четверг, 24.11.2016, 00:00 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

А формулой в соседнем столбце не пойдет? Потом оттуда можно скопировать и вставить значениями в нужно место

Код

=D7&J$6&» «&E7&J$6&» «&F7

В J$6 — разделитель у меня в файле точка с запятой


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Ilsur

Дата: Четверг, 24.11.2016, 00:11 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Конечно можно, я как вариант рассматривал его, но желательно с использованием макроса


с благодарностью Ilsur

 

Ответить

Timber_Wolf

Дата: Четверг, 24.11.2016, 09:48 |
Сообщение № 4

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 107


Репутация:

2

±

Замечаний:
0% ±


Excel 2010

Ilsur,

Вопрос 1
А результирующая ячейка то какая? =)) Вы выделяете 2-4 ячейки используете макрос и куда вы результат хотите получить? Во все 2-4 выделенных ячейки? =)

Вопрос 2
Вы хотите делать такую процедуру в ручную? Взять, выделить, макрос, готово, следующая строка… А обработка всего листа сразу не страивает? )

Сообщение отредактировал Timber_WolfЧетверг, 24.11.2016, 09:49

 

Ответить

Wasilich

Дата: Четверг, 24.11.2016, 12:32 |
Сообщение № 5

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

Сама тема начинается со слова «макрос» но, почему то здесь!
Так пойдет?
[vba]

Код

Sub Макрос1()
  Dim I&, TX$
  Application.ScreenUpdating = False:  Application.DisplayAlerts = False
  For I = 7 To Range(«D» & Rows.Count).End(xlUp).Row
    TX = Cells(I, 4) & »  » & Cells(I, 5) & »  » & Cells(I, 6)
    Range(«D» & I & «:F» & I).Merge Across:=True
    Cells(I, 4) = TX
  Next
  Application.ScreenUpdating = True: Application.DisplayAlerts = True
End Sub

[/vba]

Сообщение отредактировал WasilichЧетверг, 24.11.2016, 12:36

 

Ответить

Ilsur

Дата: Четверг, 24.11.2016, 16:07 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

да я и хочу весь лист с использованием макроса


с благодарностью Ilsur

 

Ответить

Ilsur

Дата: Четверг, 24.11.2016, 16:08 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Wasilich большое спасибо за помощь, то что надо!))


с благодарностью Ilsur

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Несколько столбцов в excel как добавить еще
  • Несколько сносок на один источник word
  • Несколько смещений в excel
  • Несколько связанных выпадающих списков в excel
  • Несколько раскрывающихся списков в excel