Pon todo el siguiente código en los eventos de tu hoja "acción"
Actualizo en el código los nombres de las hojas y la columna "F" por la columna donde tienes la fecha de venta, en estas líneas:
Set rng = Intersect(Target, Range("F:F"))
Set sh = Sheets("acciones vendidas")
lr = sh.Range("F" & Rows.Count).End(3).Row + 1
---
Option Explicit
'
Dim numordenados As New Collection
'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, c As Range
Dim i As Long, num As Long, lr As Long
Dim sh As Worksheet
'
Application.ScreenUpdating = False
Set rng = Intersect(Target, Range("F:F"))
If Not rng Is Nothing Then
For Each c In rng
If c.Value <> "" Then
Call Addnum(c.Row)
End If
Next
'
On Error GoTo salir
Set sh = Sheets("acciones vendidas")
lr = sh.Range("F" & Rows.Count).End(3).Row + 1
For i = numordenados.Count To 1 Step -1
num = numordenados(i)
Rows(num).Copy sh.Range("A" & lr)
lr = lr + 1
Next
For i = 1 To numordenados.Count
num = numordenados(i)
Application.EnableEvents = False
Rows(num).Delete
Next
End If
'
salir:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'
Sub Addnum(n)
Dim m As Long
'Ordena números en una colección
For m = 1 To numordenados.Count
If numordenados(m) < n Then
'si el número almacenado es mayor lo almacena antes
numordenados.Add n, Before:=m
Exit Sub
End If
Next
numordenados.Add n 'si es el mayor de todos lo agrega al final
End Sub
---
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja "accion")
- En el panel del lado derecho copia la macro