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

Вход

Регистрация

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

 

= Мир MS Excel/Корректировка макроса "склейки" - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Корректировка макроса "склейки" (Макросы/Sub)
Корректировка макроса "склейки"
Blasster88 Дата: Четверг, 13.03.2014, 12:12 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Есть макрос по возвращению данных из столбца А в ячейку В1 с разделителем (' , '), проблемы две:
1) Так как при склеивании количество значений в столбце всегда разное, появляется проблема с разделителем - их вставляется в ячейку больше чем нужно. В идеале хотелось бы что бы всегда после "подклеивания" последнего значения из столбца вставлялся разделитель " ') "
2) Зачастую значений в столбце бывает достаточно много (около 5000). При склеивании такого количества возникает проблема в том что все данные не убираются в одну ячейку и склейка происходит до А1310 (при условии что в каждой ячейке столбца "А" значение из 20-ти знаков).
Можно ли как то решить эти две проблемы? Код макроса и пример в Excel прилагается. Спасибо

[vba]
Код
Private Sub CommandButton1_Click()

Dim l_list As Worksheet

Sheets("aoutput.xlsx").Select
Set l_list = ThisWorkbook.Worksheets("aoutput.xlsx")
str_list = ActiveCell.SpecialCells(xlLastCell).Row

a = "'"

For i = 1 To str_list
a = a + l_list.Cells(i, 1) + "' , '"
Next i

sMessage = "Не забудь удалить в самом конце апостроф и зяпятую!"
iTmp = MsgBox(sMessage, vbOKOnly)

l_list.Cells(1, 2) = "C_4 in (" & a & ")"

End Sub
[/vba]
К сообщению приложен файл: Vol.2.xls (41.5 Kb)
 
Ответить
СообщениеЕсть макрос по возвращению данных из столбца А в ячейку В1 с разделителем (' , '), проблемы две:
1) Так как при склеивании количество значений в столбце всегда разное, появляется проблема с разделителем - их вставляется в ячейку больше чем нужно. В идеале хотелось бы что бы всегда после "подклеивания" последнего значения из столбца вставлялся разделитель " ') "
2) Зачастую значений в столбце бывает достаточно много (около 5000). При склеивании такого количества возникает проблема в том что все данные не убираются в одну ячейку и склейка происходит до А1310 (при условии что в каждой ячейке столбца "А" значение из 20-ти знаков).
Можно ли как то решить эти две проблемы? Код макроса и пример в Excel прилагается. Спасибо

[vba]
Код
Private Sub CommandButton1_Click()

Dim l_list As Worksheet

Sheets("aoutput.xlsx").Select
Set l_list = ThisWorkbook.Worksheets("aoutput.xlsx")
str_list = ActiveCell.SpecialCells(xlLastCell).Row

a = "'"

For i = 1 To str_list
a = a + l_list.Cells(i, 1) + "' , '"
Next i

sMessage = "Не забудь удалить в самом конце апостроф и зяпятую!"
iTmp = MsgBox(sMessage, vbOKOnly)

l_list.Cells(1, 2) = "C_4 in (" & a & ")"

End Sub
[/vba]

Автор - Blasster88
Дата добавления - 13.03.2014 в 12:12
RAN Дата: Четверг, 13.03.2014, 13:51 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
1. http://www.excelworld.ru/forum/3-25-25216-16-1346405481

[vba]
Код
Sub Мяу()
     With Sheets(1).Range("A1").CurrentRegion
         r = .Resize(.Rows.Count, 1).Value
     End With
     Cells(2, 2) = "C_4 in (" & СЦЕПДИАП_A(r, "' , '") & ")"
End Sub
[/vba]

2. Как засунуть слона в Жучкину конуру? Не лезет, а надо. :D


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Четверг, 13.03.2014, 14:24
 
Ответить
Сообщение1. http://www.excelworld.ru/forum/3-25-25216-16-1346405481

[vba]
Код
Sub Мяу()
     With Sheets(1).Range("A1").CurrentRegion
         r = .Resize(.Rows.Count, 1).Value
     End With
     Cells(2, 2) = "C_4 in (" & СЦЕПДИАП_A(r, "' , '") & ")"
End Sub
[/vba]

2. Как засунуть слона в Жучкину конуру? Не лезет, а надо. :D

Автор - RAN
Дата добавления - 13.03.2014 в 13:51
Blasster88 Дата: Четверг, 13.03.2014, 15:40 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
RAN, 1) Спасибо большое. Очень помогли. Я просто еще начинающий пользователь.
2) Тут сложнее подобрать более точно выражения, но действительно надо, поскольку работать приходится с очень большими массивами, а другого способа помещения данных в корп программу нет. :D
 
Ответить
СообщениеRAN, 1) Спасибо большое. Очень помогли. Я просто еще начинающий пользователь.
2) Тут сложнее подобрать более точно выражения, но действительно надо, поскольку работать приходится с очень большими массивами, а другого способа помещения данных в корп программу нет. :D

Автор - Blasster88
Дата добавления - 13.03.2014 в 15:40
Blasster88 Дата: Четверг, 13.03.2014, 16:03 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
RAN, Я дико извиняюсь :D , но возникла другая проблемка, дело в том что в формуле из за которой весь сыр-бор апострофы должны быть еще перед первым и после последнего значения в столбце, т.е. вот то-что получается у меня сейчас C_4 in (40802810227000000465' , '40702810562000001133), а должно быть вот так C_4 in ('40802810227000000465' , '40702810562000001133' , '40702810062000001154'). Это где-то подправить можно или дополнительная строка в макросе нужна?
 
Ответить
СообщениеRAN, Я дико извиняюсь :D , но возникла другая проблемка, дело в том что в формуле из за которой весь сыр-бор апострофы должны быть еще перед первым и после последнего значения в столбце, т.е. вот то-что получается у меня сейчас C_4 in (40802810227000000465' , '40702810562000001133), а должно быть вот так C_4 in ('40802810227000000465' , '40702810562000001133' , '40702810062000001154'). Это где-то подправить можно или дополнительная строка в макросе нужна?

Автор - Blasster88
Дата добавления - 13.03.2014 в 16:03
RAN Дата: Четверг, 13.03.2014, 16:33 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Cells(2, 2) = "C_4 in ('" & СЦЕПДИАП_A(r, "' , '") & "')"
[/vba]
Неужели сложно чуть подумать?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Cells(2, 2) = "C_4 in ('" & СЦЕПДИАП_A(r, "' , '") & "')"
[/vba]
Неужели сложно чуть подумать?

Автор - RAN
Дата добавления - 13.03.2014 в 16:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Корректировка макроса "склейки" (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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