2017-01-11 3 views
0

Я работаю в Excel 2010. Я пытаюсь объединить значения в один столбец и ввести Char (10) между каждой ячейкой. Итак, я работаю в ячейках BC2: BC11, и я хочу объединить все в ячейке BC1. Я придумал это для BC1:Как я могу перебирать строку за строкой до тех пор, пока не будет найдена пустая ячейка

ActiveCell.FormulaR1C1 = "=R[1]C & CHAR(10) & R[2]C & CHAR(10) & R[3]C & CHAR(10) & R[4]C & CHAR(10) & R[5]C & CHAR(10) & R[6]C & CHAR(10) & R[7]C & CHAR(10) & R[8]C & CHAR(10) & R[9]C & CHAR(10) & R[10]C" 

Он работает, но проблема в том, что часто будет меньше 10 значений в моем массиве, так что я получаю кучу разрывы строк накапливались в конце концов, и что помешает что-то вниз по течению от этого. Я бы хотел придумать элегантный способ петли через BC2: BC11 и комбинировать все с CHAR (10) между каждой ячейкой. Может ли кто-нибудь дать мне сценарий или указать мне в правильном направлении?

Спасибо.

+0

Где код, который вы используете сейчас? – Comintern

ответ

2

возможный код, без петель

With ActiveCell 
    .value = Join(Application.Transpose(.Offset(1).Resize(10).value), " ") '<--| change "10" to your actual cells number to be considered below active cell 
    .value = WorksheetFunction.Trim(.value) 
    .Replace " ", Chr(10) 
End With 
+0

@ ryguy7272, сделал yio пройти через это? – user3598756

1

Существует несколько способов достижения этого. Предполагая, что вы всегда используете BC2: BC11, вы можете создать простой цикл для построения строки, а затем вывести результат в активную ячейку.

Dim newString As String 
For i = 2 To 11 

    If ActiveSheet.Range("BC" & i).Text <> "" Then 
     If newString = "" Then 
      newString = ActiveSheet.Range("BC" & i).Text 
     Else 
      newString = newString & Chr(10) & ActiveSheet.Range("BC" & i).Text 
     End If 
    End If 

Next 

ActiveCell.Value = newString 

Надежда, что помогает :)

Смежные вопросы