Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Объедение параллельных строк,из 3 столбцов,в один.... - Мир MS Excel

Старая форма входа
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: китин, _Boroda_  
Объедение параллельных строк,из 3 столбцов,в один....
libero23 Дата: Вторник, 13.11.2012, 21:47 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Помогите пожалуйста написать макрос для объединения строк в exel. Третий день уже сижу над этим вопросом и никак не могу найти решение,взорвал весь гугл,яндекс и всё т.п. Есть прайс лист ( вложен в сообщении) , надо сделать так,чтобы данные из столбцов B и С перенеслись в столбец А и были прописаны через разделитель "/",т.е. вот кусочек из прайса (изначальный вид)

Gender Brand Type

man 7 FOR ALL MANKIND Pants
man 7 FOR ALL MANKIND Pants
woman 7 FOR ALL MANKIND Jeans
woman 7 FOR ALL MANKIND Jeans
woman 7 FOR ALL MANKIND Jeans
woman 7 FOR ALL MANKIND Jeans

а надо

Gender/Brand/Type

man/7 FOR ALL MANKIND/Pants
man/7 FOR ALL MANKIND/Pants
woman/7 FOR ALL MANKIND/Jeans
woman/7 FOR ALL MANKIND/Jeans
woman/7 FOR ALL MANKIND/Jeans
woman/7 FOR ALL MANKIND/Jeans

Помогите пожалуйста,а то я не могу сдвинуться с места,буду очень признателен....
К сообщению приложен файл: ExportProducts1.csv (9.5 Kb)
 
Ответить
СообщениеПомогите пожалуйста написать макрос для объединения строк в exel. Третий день уже сижу над этим вопросом и никак не могу найти решение,взорвал весь гугл,яндекс и всё т.п. Есть прайс лист ( вложен в сообщении) , надо сделать так,чтобы данные из столбцов B и С перенеслись в столбец А и были прописаны через разделитель "/",т.е. вот кусочек из прайса (изначальный вид)

Gender Brand Type

man 7 FOR ALL MANKIND Pants
man 7 FOR ALL MANKIND Pants
woman 7 FOR ALL MANKIND Jeans
woman 7 FOR ALL MANKIND Jeans
woman 7 FOR ALL MANKIND Jeans
woman 7 FOR ALL MANKIND Jeans

а надо

Gender/Brand/Type

man/7 FOR ALL MANKIND/Pants
man/7 FOR ALL MANKIND/Pants
woman/7 FOR ALL MANKIND/Jeans
woman/7 FOR ALL MANKIND/Jeans
woman/7 FOR ALL MANKIND/Jeans
woman/7 FOR ALL MANKIND/Jeans

Помогите пожалуйста,а то я не могу сдвинуться с места,буду очень признателен....

Автор - libero23
Дата добавления - 13.11.2012 в 21:47
Serge_007 Дата: Вторник, 13.11.2012, 22:00 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Code
=A2&"/"&B2&"/"&C2


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Code
=A2&"/"&B2&"/"&C2

Автор - Serge_007
Дата добавления - 13.11.2012 в 22:00
ABC Дата: Вторник, 13.11.2012, 22:03 | Сообщение № 3
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
формулой не как пробовали?
Code
=A2&"/"&B2&"/"&C2


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
Сообщениеформулой не как пробовали?
Code
=A2&"/"&B2&"/"&C2

Автор - ABC
Дата добавления - 13.11.2012 в 22:03
ABC Дата: Вторник, 13.11.2012, 22:27 | Сообщение № 4
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
не успел формулой
макрос





MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет


Сообщение отредактировал ABC - Вторник, 13.11.2012, 22:41
 
Ответить
Сообщениене успел формулой
макрос




Автор - ABC
Дата добавления - 13.11.2012 в 22:27
Hugo Дата: Вторник, 13.11.2012, 22:37 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Файлик положить в папку с этим csv и запустить даблкликом.
Результат будет рядом, под именем ExportProducts2.csv
Если что - код правится в блокноте.
К сообщению приложен файл: parser_todo.vbs (0.6 Kb)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеФайлик положить в папку с этим csv и запустить даблкликом.
Результат будет рядом, под именем ExportProducts2.csv
Если что - код правится в блокноте.

Автор - Hugo
Дата добавления - 13.11.2012 в 22:37
Hugo Дата: Вторник, 13.11.2012, 22:39 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Даулет, а зачем там словарь? smile


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеДаулет, а зачем там словарь? smile

Автор - Hugo
Дата добавления - 13.11.2012 в 22:39
ABC Дата: Вторник, 13.11.2012, 22:45 | Сообщение № 7
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
Игорь,
Ай, я привык добавлять, хотя не нужен: красиво смотрится biggrin


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
СообщениеИгорь,
Ай, я привык добавлять, хотя не нужен: красиво смотрится biggrin

Автор - ABC
Дата добавления - 13.11.2012 в 22:45
Pelena Дата: Вторник, 13.11.2012, 23:20 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
ОФФ
Название темы мне очень нравится


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеОФФ
Название темы мне очень нравится

Автор - Pelena
Дата добавления - 13.11.2012 в 23:20
Hugo Дата: Вторник, 13.11.2012, 23:26 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Я вообще-то не понял, понял ли я задачу так, как её понял ТС smile


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЯ вообще-то не понял, понял ли я задачу так, как её понял ТС smile

Автор - Hugo
Дата добавления - 13.11.2012 в 23:26
AlexM Дата: Среда, 14.11.2012, 00:18 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Еще вариант макроса
[vba]
Code
Sub Macros()
Dim i As Integer
For i = 2 To Range("A1").End(xlDown).Row
     Range("A" & i) = Join(Array(Range("A" & i), Range("B" & i), Range("C" & i)), "/")
Next i
Columns("B:C").Delete Shift:=xlToLeft
End Sub
[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЕще вариант макроса
[vba]
Code
Sub Macros()
Dim i As Integer
For i = 2 To Range("A1").End(xlDown).Row
     Range("A" & i) = Join(Array(Range("A" & i), Range("B" & i), Range("C" & i)), "/")
Next i
Columns("B:C").Delete Shift:=xlToLeft
End Sub
[/vba]

Автор - AlexM
Дата добавления - 14.11.2012 в 00:18
ikki Дата: Среда, 14.11.2012, 00:26 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
офф sad
не то что не объели строчки, а даже не обкусали...
и еще сомневаются!
Quote (Hugo)
Я вообще-то не понял, понял ли я задачу так, как её понял ТС


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеофф sad
не то что не объели строчки, а даже не обкусали...
и еще сомневаются!
Quote (Hugo)
Я вообще-то не понял, понял ли я задачу так, как её понял ТС

Автор - ikki
Дата добавления - 14.11.2012 в 00:26
libero23 Дата: Среда, 14.11.2012, 00:32 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Quote (ABC)
не успел формулой
макрос

Sub www()
Dim x(), rez(), a&
x = Range([a1], Cells(Rows.Count, 1).End(xlUp).Offset(0, 14)).Value
ReDim rez(1 To UBound(x), 1 To 12)
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
For a = 1 To UBound(x)
rez(a, 1) = x(a, 1) & "/" & x(a, 2) & "/" & x(a, 3)
rez(a, 2) = x(a, 4): rez(a, 3) = x(a, 5): rez(a, 4) = x(a, 6): rez(a, 5) = x(a, 7)
rez(a, 6) = x(a, 8): rez(a, 7) = x(a, 9): rez(a, 8) = x(a, 10): rez(a, 9) = x(a, 11)
rez(a, 10) = x(a, 12): rez(a, 11) = x(a, 13): rez(a, 12) = x(a, 14)
Next
End With
Cells.Clear
Range("A1").Resize(a - 1, 12) = rez()
Cells.RowHeight = 15
End Sub


Спасибо огромное,это то,что надо !

Quote (Pelena)
ОФФ
Название темы мне очень нравится

Модератор,не обессудьте )) не знал,как выразиться ... Я вообще в Exel`e ни о чём smile
 
Ответить
Сообщение
Quote (ABC)
не успел формулой
макрос

Sub www()
Dim x(), rez(), a&
x = Range([a1], Cells(Rows.Count, 1).End(xlUp).Offset(0, 14)).Value
ReDim rez(1 To UBound(x), 1 To 12)
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
For a = 1 To UBound(x)
rez(a, 1) = x(a, 1) & "/" & x(a, 2) & "/" & x(a, 3)
rez(a, 2) = x(a, 4): rez(a, 3) = x(a, 5): rez(a, 4) = x(a, 6): rez(a, 5) = x(a, 7)
rez(a, 6) = x(a, 8): rez(a, 7) = x(a, 9): rez(a, 8) = x(a, 10): rez(a, 9) = x(a, 11)
rez(a, 10) = x(a, 12): rez(a, 11) = x(a, 13): rez(a, 12) = x(a, 14)
Next
End With
Cells.Clear
Range("A1").Resize(a - 1, 12) = rez()
Cells.RowHeight = 15
End Sub


Спасибо огромное,это то,что надо !

Quote (Pelena)
ОФФ
Название темы мне очень нравится

Модератор,не обессудьте )) не знал,как выразиться ... Я вообще в Exel`e ни о чём smile

Автор - libero23
Дата добавления - 14.11.2012 в 00:32
libero23 Дата: Среда, 14.11.2012, 00:37 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Quote (AlexM)
Sub Macros()
Dim i As Integer
For i = 2 To Range("A1").End(xlDown).Row
Range("A" & i) = Join(Array(Range("A" & i), Range("B" & i), Range("C" & i)), "/")
Next i
Columns("B:C").Delete Shift:=xlToLeft
End Sub


Этот тоже подходит smile Ого,как много решений,а я 3 дня не мог справиться smile Надо было сразу на форумы обращаться,но я думал.что всё гугл поможет ))
 
Ответить
Сообщение
Quote (AlexM)
Sub Macros()
Dim i As Integer
For i = 2 To Range("A1").End(xlDown).Row
Range("A" & i) = Join(Array(Range("A" & i), Range("B" & i), Range("C" & i)), "/")
Next i
Columns("B:C").Delete Shift:=xlToLeft
End Sub


Этот тоже подходит smile Ого,как много решений,а я 3 дня не мог справиться smile Надо было сразу на форумы обращаться,но я думал.что всё гугл поможет ))

Автор - libero23
Дата добавления - 14.11.2012 в 00:37
Hugo Дата: Среда, 14.11.2012, 00:44 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Ну а мой файлик не заметили? Вся работа доли секунды, вообще не открывая Эксель.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу а мой файлик не заметили? Вся работа доли секунды, вообще не открывая Эксель.

Автор - Hugo
Дата добавления - 14.11.2012 в 00:44
Hugo Дата: Среда, 14.11.2012, 00:54 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
AlexM, для счётчика строк не используйте Integer - это тут строк мало, а у других и по "сто тыщ" бывает...
Да и вообще Integer потерял смысл в VBA: http://msdn.microsoft.com/en-us/library/aa164754(office.10).aspx
Ну и в Вашем коде было бы в 40 раз быстрее делать через массив, примерно как у ABC - взяли 3 столбца в массив, переложили, выгрузили назад.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеAlexM, для счётчика строк не используйте Integer - это тут строк мало, а у других и по "сто тыщ" бывает...
Да и вообще Integer потерял смысл в VBA: http://msdn.microsoft.com/en-us/library/aa164754(office.10).aspx
Ну и в Вашем коде было бы в 40 раз быстрее делать через массив, примерно как у ABC - взяли 3 столбца в массив, переложили, выгрузили назад.

Автор - Hugo
Дата добавления - 14.11.2012 в 00:54
libero23 Дата: Среда, 14.11.2012, 00:56 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Quote (Hugo)
Файлик положить в папку с этим csv и запустить даблкликом.
Результат будет рядом, под именем ExportProducts2.csv
Если что - код правится в блокноте.
К сообщению приложен файл: parser_todo.vbs(1Kb)


Я только-что разобрался,как запустить....супер вариант вообще smile спасибо Вам всем за помощь )))
 
Ответить
Сообщение
Quote (Hugo)
Файлик положить в папку с этим csv и запустить даблкликом.
Результат будет рядом, под именем ExportProducts2.csv
Если что - код правится в блокноте.
К сообщению приложен файл: parser_todo.vbs(1Kb)


Я только-что разобрался,как запустить....супер вариант вообще smile спасибо Вам всем за помощь )))

Автор - libero23
Дата добавления - 14.11.2012 в 00:56
KuklP Дата: Среда, 14.11.2012, 00:57 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Проще:
[vba]
Code
Public Sub www()
     Dim r As Range: Set r = Range("a2", [a65536].End(xlUp))
     r.Value = Evaluate(r.Address & "&""/""&" & _
         r.Offset(, 1).Address & "&""/""&" & r.Offset(, 2).Address)
     [b:c].Delete
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПроще:
[vba]
Code
Public Sub www()
     Dim r As Range: Set r = Range("a2", [a65536].End(xlUp))
     r.Value = Evaluate(r.Address & "&""/""&" & _
         r.Offset(, 1).Address & "&""/""&" & r.Offset(, 2).Address)
     [b:c].Delete
End Sub
[/vba]

Автор - KuklP
Дата добавления - 14.11.2012 в 00:57
libero23 Дата: Среда, 14.11.2012, 00:59 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Ну тут выложено несколько вариантов,а какой больше подойдёт для обработки примерно 10 000 строк ??
 
Ответить
СообщениеНу тут выложено несколько вариантов,а какой больше подойдёт для обработки примерно 10 000 строк ??

Автор - libero23
Дата добавления - 14.11.2012 в 00:59
KuklP Дата: Среда, 14.11.2012, 01:00 | Сообщение № 19
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Пробуйте, решайте:-)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПробуйте, решайте:-)

Автор - KuklP
Дата добавления - 14.11.2012 в 01:00
Hugo Дата: Среда, 14.11.2012, 01:00 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Мой smile
Если серьёзно - все на массивах отработают так что и не заметите.
Мой работает иначе - он работает напрямую с текстом.
На 10000 тоже будет быстро, но его можно ещё ускорить - не писать на выход построчно, а тоже собрать всё в массив и его выгрузить в файл сразу весь.
Это если строк будет значительно больше.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМой smile
Если серьёзно - все на массивах отработают так что и не заметите.
Мой работает иначе - он работает напрямую с текстом.
На 10000 тоже будет быстро, но его можно ещё ускорить - не писать на выход построчно, а тоже собрать всё в массив и его выгрузить в файл сразу весь.
Это если строк будет значительно больше.

Автор - Hugo
Дата добавления - 14.11.2012 в 01:00
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!