1

我需要根据前一个单元格中的变量连接一列单元格。这将一直持续到指定的变量发生变化。例如:

  ABCDE
1 x @1 @1+@2+@3
2×@2
3 x @3
4 年 %1 %1+%2+%3
5 年 %2
6 年 %3
等等

我需要宏来查看 A1,如果它是 x,则在 E1 中开始连接字符串。然后移动到 A2,如果它是 x,则将 D2 添加到 E1 中的连接值,然后移动到 A3,如果它是 x,则将 D3 中的值添加到 E1 中的连接值,等等。一旦它在 A 列中遇到一个新变量(y ) 过程重新开始。这是可能吗?非常感谢您的帮助!!

4

3 回答 3

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 行开始。

于 2009-09-15T19:56:31.680 回答
0

这是一个公式,粘贴到E2并复制下来,这将解决您的问题。它不会将您的答案整齐地放入 E1、E4 等,但会沿着列向下排列。

不过,您可以在 VBA 中完成您所追求的。

公式:

=IF(A2<>A1,D2,E1&D2)
于 2009-09-15T19:52:23.000 回答
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
于 2009-09-17T14:40:28.710 回答