2017-06-10 22 views
1

我有一个表有两列,即Description和Amount。我想以Description1-Amount1,Description2-Amount2等形式在第三个单元格中写入这些细节,直到出现空行。请看图像以便更好地理解。 The tabular column如何将不同单元格的值合并为我们自己格式的字符串并将其存储在第三个单元格中?

因此,现在在单元格A1中的工作表2中,我希望内容为Dad-500,Chegg-123。假设如果有更多的项目,我希望他们随后被添加。 我设计了一个宏,这样在点击时,在该时间点表中出现的任何值应保存在Sheet2的单元格A1中。

我的代码是:

Sub database 
Dim emptyRow As Long 

Dim mix1 As String 

mix1 = "=CONCATENATE(Sheet1!C5,""-"",Sheet1!D5)" 

Sheet2.Activate 

    'Determine emptyRow 
    emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 

Cells(emptyRow, 1).Value = mix1 

End Sub 

在上面的代码,Sheet1!C5,""-"",Sheet1!D5表示描述(C栏)和分别金额(d栏)。

此代码将公式复制到第二个工作表中。但我希望将这些细节转换为字符串,然后存储在空单元格(A1)中,以便下次如果我使用表中的不同值集运行宏,应将这些细节复制到单元格A2中因为这是下一个空单元格)并且单元格A1中的值不应该被更改,因为它被转换为字符串。

现在我遇到的问题是如果我第二次运行宏,单元格A1和A2中的值都会更改,因为这两个单元格都包含公式而不是字符串。

请帮助我如何将不同单元格的值合并为我们自己格式的字符串并将其存储在第三个字符串中。

回答

0

转移值而不创建公式。

sub database 
    with sheet2 
     .cells(.rows.count, "A").end(xlup).offset(1, 0) = _ 
      sheet1.cells(5, "C").value2 & chr(45) & sheet1.cells(5, "D").value2 
    end with 
end sub 
+0

您的代码仅给出第一行的值。它将Value作为“Dad-500”返回。但我希望代码读取表中的所有行并合并所有内容。基本上我想回答像“爸爸-500,Chegg-123”。请参阅我发布的图片以及问题。代码应该显示所有的值直到有一个空行。现在只有两排,即爸爸和Chegg。但是,如果有爸爸,Chegg和Bro三个值,那么它应该显示为“Dad-500,Chegg-123,Bro-350”。请稍微改变你的代码。我认为我们需要使用for循环。 – Pradeep

+0

非常感谢您的帮助。请多帮一点。请看我的第一条评论。 – Pradeep

+0

是的,我读过你叙述的那部分内容。然而,那个(例如'*我如何创建一个循环?*')与你问什么是'*如何连接两个没有公式的字符串?*'是不同的问题。如果你需要一个循环,然后写一个循环。如果遇到麻烦,请回复一个新问题。 – Jeeped

相关问题