Entonces estoy tratando de organizar mis cuentas.

Tengo pocas columnas: C es la información de mi banco para cada transacción que podría contener por ejemplo la palabra 'gasolina' o 'cajero automático' o 'paypal' entre muchas otras frases clave.

Quiero crear una macro que pase por la columna C, busque '* Paypal' y, si la encuentra, coloque 'Paypal' en la columna D en esa misma fila.

Otro ejemplo: si encuentra 'B / CARD PLAT VISA' C58, me gustaría que 'Pago con tarjeta de crédito' se escribiera en D58.

¡Estoy tratando de resolverlo, basado en una antigua macro que encontré / ajusté para eliminar columnas!

Algo así como:

Dim c As Range
Dim SrchRng

Set SrchRng = ActiveSheet.Range("C1", ActiveSheet.Range("C65536").End(xlUp))
Do
    Set c = SrchRng.Find("petrol", LookIn:=xlValues)
    If Not c Is Nothing Then 
//SOMETHING GOES HERE?
Loop While Not c Is Nothing

?

Como probablemente pueda ver, no soy muy bueno en esto.

Mi objetivo final es poder obtener de estos encabezados cuánto he gastado y ganado en cada categoría cada mes / año. Debería hacer la vida del trabajador autónomo un poco más fácil.

0
SGPascoe 21 jul. 2016 a las 16:01

2 respuestas

La mejor respuesta

Esto debería ayudarlo aún más:

Sub OrganiseCategories()

    Dim FoundRange As Range, FirstAddress As String

    With Range("B:B")
      Set FoundRange = .Find("Paypal", , xlValues, xlWhole, , , False)
      FirstAddress = FoundRange.Address
      Do
        FoundRange.Offset(0, 1).Value2 = "PayPal"
        Set FoundRange = .FindNext(FoundRange)
      Loop While Not FoundRange Is Nothing And FoundRange.Address <> FirstAddress

    End With

End Sub

Ron de Bruin tiene una bonita página sobre esto: http://www.rondebruin.nl/win/s9/win006.htm

0
CoRrRan 21 jul. 2016 a las 13:31

¡OK! Entonces, con la ayuda de CoRrRan, algo de autograbación de macros y un poco de Google, me las arreglé para crear exactamente lo que necesitaba.

Sub OrganiseCategories()

Dim FoundRange As Range, FirstAddress As String, Searchterm As Variant,     Searchresult As Variant

Searchterm = InputBox("What term would you like to search for?")
Searchresult = InputBox("What category would you like to set for this term?")
    With Range("C:C")
  Set FoundRange = .Find(What:=Searchterm, LookIn:=xlValues, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
  FirstAddress = FoundRange.Address
  Do
    FoundRange.Offset(0, 1).Value2 = Searchresult

    Set FoundRange = .FindNext(FoundRange)
  Loop While Not FoundRange Is Nothing And FoundRange.Address <> FirstAddress

End With

End Sub

Esto me da un cuadro de entrada para ingresar un término de búsqueda no exacto y un cuadro de entrada para elegir una categoría para colocar el resultado de la búsqueda: mucho más fácil que cambiar el código cada vez que quiero hacer una nueva búsqueda. Puedo crear múltiples búsquedas 'predeterminadas' para términos como gasolina, visa, paypal, etc. sin los cuadros de entrada, como base en una macro separada.

1
SGPascoe 25 jul. 2016 a las 13:01