2013-05-29 65 views
1

我有一个列C在其所有单元格中都有名称,另一个列E在其所有单元格中都有相同的公司名称我需要将C列中的名称追加到列中的公司名称Ë将单元格追加到其他单元格

感谢

例:

ColC ColE 
Bob SampleCo 
Sally SamplCo 

我得到

ColC ColE 
Bob SampleCo Bob 
Sally SamplCo Sally 

我努力但

Sub CompanyName() 

Dim LastRow As Long 
Dim Ws As Worksheet 
Dim rRange As range 


Set rRange = range("E2") 
rRange.Select 

Set Ws = Sheets("WP_SubjectList_Ready") 

LastRow = Ws.range("F" & Ws.Rows.Count).End(xlUp).Row 

Ws.range("E2:E" & LastRow).FormulaR1C1 = "=rRange &RC[-1]" 

range("E2:E" & LastRow).Copy 
range("E2:E" & LastRow).PasteSpecial xlPasteValues 

End Sub 
+0

所有你想要做的就是创建一个放在股骨颈的E collumn E中的价值“”同一行的C列的值的宏? – Newbie

回答

2

代码

Sub CompanyName() 

    Dim LastRow As Long 
    Dim Ws As Worksheet 

    Set Ws = Sheets("WP_SubjectList_Ready") 
    LastRow = Ws.Range("E" & Ws.Rows.Count).End(xlUp).Row 
    Ws.Range("F2:F" & LastRow).FormulaR1C1 = "= RC[-1] & "" "" & RC[-3]" 

End Sub 

enter image description here

如果你想使用FormulaR1C1Column E其不可能输出。 任何适用于excel界面的公式都适用于FormulaR1C1。 与我的意思是(考虑到图像)在单元格F2你可以manullay输入一个公式= E2 & " " & C2这将给你所需的输出。但是,如果在单元格E2中输入公式=E2 & " " & C2,则单元E2将失去其价值,这甚至可能导致循环参考问题。

它可以使用下面的代码来实现。

Sub CompanyName() 

    Dim LastRow As Long 
    Dim Ws As Worksheet 
    Dim rng As Range, cell As Range 

    Set Ws = Sheets("WP_SubjectList_Ready") 
    LastRow = Ws.Range("E" & Ws.Rows.Count).End(xlUp).Row 
    Set rng = Ws.Range("E2:E" & LastRow) 

    For Each cell In rng 
     cell = cell & " " & cell.Offset(0, -2) 
    Next 
End Sub 

enter image description here

+0

Santosh它完美的工作。我担心我通过粘贴回E列创建了一个不好的功能。我会将Google'cell.Offset()'读起来,它看起来像是一种有价值的技术。 '谢谢' – xyz

2

这里失败的一些代码,来帮助你完成你想要什么......我通常不使用for循环的范围,因为它更容易使用.Cells(行,列)对我来说,但反正:

编辑:添加的子打开/关闭语法和编辑使用WS而不是ActiveSheet所以它更接近你想要什么

Sub CompanyName() 
Dim WS as Worksheet 
Dim vRow 
Dim vRowCount As Integer 

Set WS = Sheets("WP_SubjectList_Ready") 

'Gets Row # of Last Row for Column E 
vRowCount = Range("E" & Rows.Count).End(xlUp).row 

'Assuming Both Columns have the same row count and you have a header row 
For vRow = 2 To vRowCount 
    WS.Cells(vRow, 5).Value = WS.Cells(vRow, 5).Value & " " & WS.Cells(vRow, 3).Value 
Next vRow 

End Sub 
+0

Kurt它工作得很好,谢谢。我会研究你如何做到这一点,这会帮助我更好地理解。 – xyz

相关问题