我需要根据前一个单元格中的变量连接一列单元格。这将继续,直到指定的变量发生变化。例如:
A B C D E 1 x @1 @1+@2+@3 2 x @2 3 x @3 4 y %1 %1+%2+%3 5 y %2 6 y %3 etc.
我需要宏来查看A1,如果是x,则在E1中开始连接字符串。然后移动到A2,如果是x,则将D2添加到E1中的连接值,然后移动到A3,如果是x,则将D3中的值添加到E1中的连接值,等等。一旦它到达A列中的新变量(y)这个过程重新开始。这是可能吗?非常感谢您的帮助!!
答案 0 :(得分:2)
这是一些快速而肮脏的代码,但它起作用:
Dim i As Integer
Dim j As Integer
i = 1
j = 1
Dim initialValue As String
initialValue = Cells(i, 1).Value
Do While Cells(i, 1).Value <> ""
Cells(j, 5).Value = ""
Do While Cells(i, 1).Value = initialValue
Cells(j, 5).Value = Cells(j, 5).Value & Cells(i, 4).Value
i = i + 1
Loop
initialValue = Cells(i, 1).Value
j = j + 1
Loop
它假定活动工作表是您的列。并且列号是硬编码的,您从第1行开始。
答案 1 :(得分:0)
这是一个公式,粘贴到E2并复制下来,这将解决您的问题。它不会整齐地将你的答案放入E1,E4等,但会在列中向下级联。
你可以完全按照你在VBA中所做的那样。
公式:
=IF(A2<>A1,D2,E1&D2)
答案 2 :(得分:0)
试试这个:
Dim row As Integer
Dim col As Integer
Dim working_row As Integer
Dim rowVal As String, myStr As String
rowVal = ""
row = 1
col = 4
While Cells(row, 1).Value <> ""
If Cells(row, 1).Value <> rowVal Then
myStr = ""
working_row = row
rowVal = Cells(row, 1).Value
End If
myStr = myStr & CStr(Cells(row, col).Value)
Cells(working_row, col + 1).Value = myStr
row = row + 1
Wend