Hi
What is the problem??
You want this…Suppose column B already has data
and after that I am runing the macro
then the result will be pasted to column C
and the result which we have to paste is 2
and again when I ran the macro then column C can have the data or it cant have
but if column C has data then the result should be paste as 3 and so on….
Have you tried Molly’s macro ??
I have tried Molly’s macro . ( your version here: http://www.excelfox.com/forum/showth...ll=1#post12846 ) it does this:
Start like this
_____ Workbook: Merge (1).xlsx ( Using Excel 2007 32 bit )
Worksheet: Sheet3
Row\Col A B C D E 1Symbol 2ACC 3ADANIENT 4
Now Run it once … It does this
_____ Workbook: Merge (1).xlsx ( Using Excel 2007 32 bit )
Worksheet: Sheet3
Row\Col A B C D E 1Symbol 2ACC 1 3ADANIENT 1 4
Now run it again… It does this
_____ Workbook: Merge (1).xlsx ( Using Excel 2007 32 bit )
Worksheet: Sheet3
Row\Col A B C D E 1Symbol 2ACC 1 2 3ADANIENT 1 2 4
Now run it again… It does this..
_____ Workbook: Merge (1).xlsx ( Using Excel 2007 32 bit )
Worksheet: Sheet3
Row\Col A B C D E 1Symbol 2ACC 1 2 3 3ADANIENT 1 2 3 4
and so on.............................
So it does exactly what you asked for
What is your problem ???
The macro from Molly is doing exactly what you are asking for !!!!
Code:Sub STEP7_() ' Rem 1 Worksheets info Dim Wbm As Workbook, Ws1 As Worksheet, Ws2 As Worksheet, Ws3 As Worksheet Set Wbm = Workbooks("Merge (1).xlsx") ' Set Wbm = Workbooks.Open(ThisWorkbook.Path & "\Merge1.xlsx") ' "\Merge.xlsx") ' change to suit Set Ws1 = Wbm.Worksheets("Sheet1"): Set Ws2 = Wbm.Worksheets("Sheet2"): Set Ws3 = Wbm.Worksheets("Sheet3") Rem 2 data Input Dim arrS1() As Variant, arrS2() As Variant, arrS3() As Variant Let arrS1() = Ws1.Range("A1").CurrentRegion.Value: arrS2() = Ws2.Range("A1").CurrentRegion.Value '2b ReDim arrS3(1 To UBound(arrS1(), 1)) ' A 1 dimension array of arrays ''2b(i) ' Let arrS3(1) = Ws3.Range("A" & Ws3.Range("A1").CurrentRegion.Columns.Count & "") ' header row as a one dimensional array ''2b(ii) data rows array output Rem 3 Dim cnt For cnt = 2 To UBound(arrS1(), 1) ' "row" count, cnt '2b)(ii) Dim Lc As Long: Let Lc = Ws3.Cells.Item(cnt, Ws3.Cells.Columns.Count).End(xlToLeft).Column ' last column in this row cnt Let arrS3(cnt) = Ws3.Range("A" & cnt & ":" & CL(Lc + 1) & cnt & "").Value ' - returns an array of 1 "row" into this element of the array of arrays Select Case arrS1(cnt, 9) ' column I Case "SELL" 'If column I is sell If arrS1(cnt, 11) > arrS2(cnt, 5) Then ' if column K is Greater than sheet2 of column E then ' do nothing Else Let arrS3(cnt)(1, UBound(arrS3(cnt), 2)) = UBound(arrS3(cnt), 2) - 1 ' Put in a value in last array "column" End If Case "BUY" 'If column I is buy If arrS1(cnt, 11) < arrS2(cnt, 6) Then ' if column K is lower than sheet2 of column F then ' do nothing Else Let arrS3(cnt)(1, UBound(arrS3(cnt), 2)) = UBound(arrS3(cnt), 2) - 1 ' Put in a value in last array "column" End If End Select '3b) output "row" Let Ws3.Range("A" & cnt & "").Resize(1, Lc + 1).Value = arrS3(cnt) Next cnt Rem 4 ....and after putting the remark clear sheet 1 and sheet 2 ' Ws1.Cells.ClearContents ' Ws2.Cells.ClearContents ' Wbm.Save ' Wbm.Close End Sub Public Function CL(ByVal lclm As Long) As String ' http://www.excelforum.com/development-testing-forum/1101544-thread-post-appendix-no-reply-needed-please-do-not-delete-thanks-4.html#post4213980 Do: Let CL = Chr(65 + (((lclm - 1) Mod 26))) & CL: Let lclm = (lclm - (1)) \ 26: Loop While lclm > 0 End Function




Reply With Quote

Bookmarks