1

I need to concatenate a column of cells based on a variable in a previous cell. This will continue on until the specified variable changes. For example:

  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.

I need the macro to look at A1 and if it's x then begin a concatenated string in E1. Then move to A2, if it's x add D2 to the concatenated value in E1, then move to A3, if it's x add the value in D3 to the concatenated value in E1, etc. Once it hits a new variable in column A (y) the process starts over. Is this at all possible? Thanks very much for your help!!

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 に答える