2015-09-17 4 views
-1

Так что я в следующей таблице ExcelКак сцепить столбцы

A B C D E F G 
4 5 5 4 8 8 9 
4 8 7 7 8 7 8 
2 1 7 4 7 8 8 
upto 2000th row 

мне нужно быть отформатирован следующим образом, но с использованием VBA только

A B   C 
4 55488  9 
4 87787  8 
2 17478  8 
upto 2000th row 

Любые предложения о том, как я могу это сделать?

+0

Сделайте это вручную и запишите макрос. – xQbert

+0

Итерации через все строки ('For') и используйте что-то вроде этого' ActiveWorkbook.Sheets («Sheet1»). Ячейки (i, 2) = Ячейки (i, 2) и ячейки (i, 3) и ячейки (i, 4) ... '. –

+0

Что вы сделали до сих пор? Пожалуйста, включите ваши попытки. – Steven

ответ

2

Try:

Sub Santosh() 
    For i = 1 To 2400 
     Cells(i, "B") = Cells(i, "B") & Cells(i, "C") & Cells(i, "D") & Cells(i, "E") & Cells(i, "F") 
    Next i 
    Columns("C:F").Delete 
End Sub 
+0

Большое спасибо :) –

+0

Приятно видеть, что вы можете удалять данные пользователя, не спрашивая их и выбираться как лучший ответ. XD – findwindow

+0

lol Я делаю здесь. Я просто возмущен, потому что знаю, и каждый, кто понимает программирование, знает, что у меня лучший код (соответствует указанным требованиям пользователя). – findwindow

0

Вы могли бы записи макроса себя, чтобы сделать что-то вроде этого:

Sub Test() 

    ' add new column 
    Columns("B:B").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 

    ' add formula in the newly created column B 
    Range("B1").Select 
    ActiveCell.FormulaR1C1 = "=RC[1]&RC[2]&RC[3]&RC[4]&RC[5]" 

    ' repeat the fomula for 2000 rows 
    Range("B1").Select 
    Selection.AutoFill Destination:=Range("B1:B2000") 

    ' copy and paste over itself as values so that the formula is converted to resulting data 
    Range("B1:B2000").Select 
    Columns("B:B").Select 
    Selection.Copy 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

    ' remove C through G columns 
    Range("C6").Select 
    Application.CutCopyMode = False 
    Columns("C:G").Select 
    Selection.Delete Shift:=xlToLeft 
    Range("A1").Select 

End Sub 

Этот код генерируется непосредственно из записи макросов и модифицированный в соответствии с 2000 строк.

2

Вы ничего о столбцах не говорят мимо C, так что я держал их как есть ...

sub SO() 

Dim c As String 

For i = 2 To 2000 
c = Cells(i, 2) & Cells(i, 3) & Cells(i, 4) & Cells(i, 5) & Cells(i, 6) 
Cells(i, 2) = c 
Cells(i, 3) = Cells(i, 7) 
Next 

end sub 
+0

Это хорошо работает, но я хочу удалить столбцы за пределами C, как я могу это сделать? –

+0

Добавьте столбцы («D: G»). Delete 'в конце. – findwindow

+0

@Santosh lol действительно? Вы не запрашиваете требования, и когда я предоставляю ответ по запросу, вы удаляете галочку lololol – findwindow

0

Вот результаты делать это вручную и запись макроса ... гораздо сложнее, чем кодирование это вручную, но гораздо проще сделать imo.

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
    Application.Left = 406.75 
    Application.Top = 289 
    Columns("G:G").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
    Range("G1").Select 
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-5],RC[-4],RC[-3],RC[-2],RC[-1])" 
    Range("G1").Select 
    Range(Selection, Selection.End(xlDown)).Select 
    Range("G1:G2000").Select 
    Selection.FillDown 
    Selection.End(xlUp).Select 
    Columns("G:G").Select 
    Selection.Copy 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Columns("B:F").Select 
    Range("F1").Activate 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlToLeft 
    Range("D2").Select 
    Application.Left = 17.5 
    Application.Top = 277.75 
    Application.Goto Reference:="Macro1" 
End Sub 
0

Вы можете добавить столбец и сцепить столбцы вместе, а затем удалить другие столбцы.

A B C D E F G 
4 5 5 4 8 8 9 
4 8 7 7 8 7 8 
2 1 7 4 7 8 8 

A B C D E F G H 
4 5 5 4 8 8 * 9 
4 8 7 7 8 7 * 8 
2 1 7 4 7 8 * 8 

where * = cstr(B2) & cstr(C2) & cstr(D2) & cstr(E2) & cstr(F2) 
Смежные вопросы