Сцепление ячеек

Программирование на Visual Basic for Applications
woxel
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.07.2008 (Пт) 13:04

Сцепление ячеек

Сообщение woxel » 04.07.2008 (Пт) 14:00

Как тут:
Код: Выделить всё
Cells(k, y + 5).Value = "=CONCATENATE(k: x - 1)"

передать значения переменных k и x в функцию concatenate

п.с. Сильно не пинайте, в VBA я полный ноль. В гугле искал

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.07.2008 (Пт) 14:09

Присваивать надо Formula (или FormulaR1C1), а не Value, это раз.
Строка из переменных собирается по другому, это два.
В данном случае я бы использовал .FormulaR1C1 = "=CONCATENATE(RC" & x-1 & ")"
Lasciate ogni speranza, voi ch'entrate.

woxel
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.07.2008 (Пт) 13:04

Сообщение woxel » 04.07.2008 (Пт) 14:40

Спасибо за ответ
Но ваш пример работает не так как я хотел
я хотел задать диапазон ячеек в столбце, т.е. от k до x-1 .
Что делает ваш пример я в силу своего ламерства понять не могу, но что-то не то

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.07.2008 (Пт) 14:58

Тогда опиши задачу.
И объясни, почему у тебя слева используется y, а справа x, это опечатка или так и задумано?
Lasciate ogni speranza, voi ch'entrate.

woxel
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.07.2008 (Пт) 13:04

Сообщение woxel » 04.07.2008 (Пт) 15:05

есть таблица с 2 столбцами(упрощаю)
в одном названия фирм, в том числе повторяющиеся, в другом список документов
примерно так:
фирма1-документ1
фирма1-документ2
фирма2-документ1
фирма2-документ2
фирма2-документ3
количество документов на фирму различно
Нужно:
1.объединить ячейки с повторяющимися названиями в одну
2.сцепить ячейки с документами в одну в другом столбце.
вот макрос целиком:
Код: Выделить всё
Sub Макрос2()
x = 1
y = 2
k = x
Application.DisplayAlerts = False
Do While Cells(x, y).Value <> ""
If Cells(x, y).Value <> Cells(k, y).Value Or Cells(x + 1, y).Value = "" Then
If Cells(x + 1, y).Value = "" Then x = x + 1
Range(Cells(k, y), Cells(x - 1, y)).MergeCells = True
Cells(k, y + 5).FormulaR1C1 = "=CONCATENATE(RC" & x - 1 & ")"
k = x
End If
x = x + 1
Loop
End Sub

ячейки объединаются нормально, единственная проблема это подстановка переменных в CONCATENATE

woxel
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.07.2008 (Пт) 13:04

Сообщение woxel » 04.07.2008 (Пт) 15:09

alibek писал(а):Тогда опиши задачу.
И объясни, почему у тебя слева используется y, а справа x, это опечатка или так и задумано?

так задумано, в первом случае я указываю ячейку, во втором диапазон ячеек

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 05.07.2008 (Сб) 2:10

Вообще объединение ячеек в Excel есть зло само по себе. Рекомендую им не пользоваться. Пример альтернативного подхода ниже, если конечно я правильно понял задачу:

Код: Выделить всё
Sub test()
    Dim rng1 As Range, rng2 As Range
    Dim Addr1 As String, Addr2 As String
   
    Set rng1 = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
    Set rng2 = rng1.Offset(, 1)
    Addr1 = rng1.Address
    Addr2 = rng2.Address
   
    rng2.Offset(, 1) = Evaluate(Addr1 & "&"" - ""&" & Addr2)
    rng1 = Evaluate("IF(FREQUENCY(MATCH(" & Addr1 & "," & Addr1 & ",0),MATCH(" & Addr1 & "," & Addr1 & ",0))>0," & Addr1 & ","""")")
End Sub
Привет,
KL


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 62

    TopList