Есть макрос по возвращению данных из столбца А в ячейку В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]
Есть макрос по возвращению данных из столбца А в ячейку В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)
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. Как засунуть слона в Жучкину конуру? Не лезет, а надо.
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. Как засунуть слона в Жучкину конуру? Не лезет, а надо. RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Четверг, 13.03.2014, 14:24
RAN, 1) Спасибо большое. Очень помогли. Я просто еще начинающий пользователь. 2) Тут сложнее подобрать более точно выражения, но действительно надо, поскольку работать приходится с очень большими массивами, а другого способа помещения данных в корп программу нет.
RAN, 1) Спасибо большое. Очень помогли. Я просто еще начинающий пользователь. 2) Тут сложнее подобрать более точно выражения, но действительно надо, поскольку работать приходится с очень большими массивами, а другого способа помещения данных в корп программу нет. Blasster88
RAN, Я дико извиняюсь , но возникла другая проблемка, дело в том что в формуле из за которой весь сыр-бор апострофы должны быть еще перед первым и после последнего значения в столбце, т.е. вот то-что получается у меня сейчас C_4 in (40802810227000000465' , '40702810562000001133), а должно быть вот так C_4 in ('40802810227000000465' , '40702810562000001133' , '40702810062000001154'). Это где-то подправить можно или дополнительная строка в макросе нужна?
RAN, Я дико извиняюсь , но возникла другая проблемка, дело в том что в формуле из за которой весь сыр-бор апострофы должны быть еще перед первым и после последнего значения в столбце, т.е. вот то-что получается у меня сейчас C_4 in (40802810227000000465' , '40702810562000001133), а должно быть вот так C_4 in ('40802810227000000465' , '40702810562000001133' , '40702810062000001154'). Это где-то подправить можно или дополнительная строка в макросе нужна?Blasster88