En Excel, ¿cómo puedo cambiar automáticamente los datos de una celda (VBA)?

0

Me gustaría cambiar automáticamente el contenido de las celdas cuando se peguen datos en ellas. Los datos se pegarán en la columna Q de una hoja en Excel. Necesito que coincida con los datos de la Columna A de otra hoja, titulada 'Usuarios', y que devuelva el valor correspondiente de la Columna B de la misma hoja. Supongo que requerirá el uso de VBA, ¡aunque tengo muy poca comprensión de la codificación de VBA!

¡Cualquier ayuda será muy apreciada!

Alan
fuente
1
Por favor, editar su pregunta para explicar mejor lo que está tratando de hacer, incluyendo lo que ya ha intentado, a continuación, pedir cómo lograrlo. Al incluir el método de solución en su pregunta, limita las respuestas solo a las soluciones de VBA. Puede haber una solución que no sea VBA.
CharlieRB
Mire hacia arriba worksheet change eventy díganos dónde se queda atrapado
Raystafarian
¿Quiere decir que cuando ingresa cierto valor en la columna Q en la hoja 1 , luego Excel para " buscar " ese valor en la columna A de la hoja2 y devolver el valor de la columna B de la hoja 2 a la hoja1 . ¿Pero en qué columna de la hoja 1 ?
Prasanna
Por favor, no me diga que debería cambiar el valor en la columna Q en la hoja 1 . Entonces esto se convierte en una conexión cíclica. Excel lanzará una advertencia, en este caso
Prasanna el
Hola chicos, gracias por los comentarios. Encontré un código para algo que parece más o menos lo mismo que estoy buscando en una respuesta a otra pregunta en este sitio: superuser.com/questions/541674/ ... Estoy luchando por encontrar la forma de adaptarlo a las celdas con las que estoy trabajando. He cambiado un poco mi diseño. Entonces, las celdas en las que estoy pegando datos están en la columna Q. Las celdas que quiero buscar están en la columna Z de la misma hoja, y me gustaría que devuelva el valor correspondiente de la columna AA.
Alan

Respuestas:

1

No creo que puedas hacer lo que quieras. No hay forma (que yo sepa) de detectar solo pastas.

Lo más cercano es usar

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Pero esto significa que se activará cada vez que se realice algún cambio en la página.

Entonces, como solución, lo que puede hacer es pegar en Col Q y luego ejecutar manualmente una macro (que puede asignar a un botón si es más fácil).

Option Explicit

Sub MatchThePairs()

'You can edit this top bit

'The name of column you are pasting into
Dim pastedCol As String
pastedCol = "Q" 'UPDATE ME IF NEEDED

'The name of the look up column
Dim lookupCol As String
lookupCol = "Z" 'UPDATE ME IF NEEDED

'The name of the look to show results
Dim resultCol As String
resultCol = "AA" 'UPDATE ME IF NEEDED

'Do you want to clear the results first ?
Dim clearResults As Boolean
clearResults = True 'CHANGE ME TO True OR False

'What is the row of the header (if you have one)
Dim rowHeader As Integer
rowHeader = 1 ' set to 0 if no header

'What is the name of the results column
Dim resultsColHeader As String
resultsColHeader = "ResultsCol" ' Change me to what ever

'what is the first row (do not include the headings)
Dim row As Integer
row = 2 'AS PER THE SCEEN SHOT, I STARTED ON ROW 2



' **** hopefully you won't need to edit anything below this

If clearResults Then
    Range(resultCol & ":" & resultCol).Cells.Clear

    If rowHeader > 0 Then
       Range(resultCol & rowHeader).Value = resultsColHeader
    End If


End If

Do While (Range(pastedCol & row).Value <> "")

    If Range(pastedCol & row).Value = Range(lookupCol & row).Value Then
        'yipee, a match
        Range(resultCol & row).Value = Range(lookupCol & row).Value
    End If
    row = row + 1
Loop

End Sub

antes de

ingrese la descripción de la imagen aquí

Después

ingrese la descripción de la imagen aquí

Dave
fuente