Relacionar, asociar e importar en Excel diferentes datos de dos hojas distintas

Hola amigos:
Mi problema es que tengo dos hojas en excel de tal forma que la primera es una lista de personas con diferentes columnas nombre, puntuación, clasificación etc. Y en la segunda hoja tengo un programa de calculo de puntuaciones. Lo que quiero hacer es que seleccionando una persona de la primera hoja pueda irme a la segunda hoja y calcular sus puntos de tal forma que me los importe a su celda correspondiente de la primera hoja sin necesidad de teclearlo a mano.
Agradezco de antemano vuestra ayuda.
Un saludo.
Julio.

1 respuesta

Respuesta
1
Si tienes un cálculo definido (tal vez sería más fácil si me lo describes cómo se hace el cálculo) lo que puedes hacer es una función que haga el cálculo, y luego sólo utilizarla como cualquier otra función de excel, aunque esta sólo te serviría para ese libro (tendrías que copiarla a otro para que también se pudiera usar en otro).
Esto lo haces desde el editor vb.
Detállame cómo quieres que calcule y te digo cómo hacer la función.
Estimado gualo, tal y como me pedías en tu respuesta voy a intentar axplicarte de forma simplificada cual es mi problema.
Tengo un libro de excel con dos hojas de la siguiente forma:
Hoja "a"
Nombre hcp. puntuacion
Perico Perez 16 ¿?
Antonio fax 12 ¿?
Jose Lopez 14 ¿?
Julio Vega 11 ¿?
Como puedes ver solamente es una lista de jugadores para anotarles sus puntuaciones correspondientes.
HOJA "B"
Hoyo hcp. golpes puntos
1 11 3 2
2 10 4 1
3 7 4 3
...
Totales 36 41
Esta hoja es de calculo de puntos en función de los golpes dados según unas fórmulas matemáticas que tengo introducidas con distintos condicionantes.
Lo que quiero hacer es que como la hoja de calculo es genérica para todos,
1º seleccionar un jugador de la hoja "a"
2º introducir en la hoja "b" los golpes dados para que me cañcule la puntuación.
3º (y ahora lo que no se hacer) QUE ESA PUNTUACIÓN ME LA PASE AUTOMÁTICAMENTE A LA CELDA DE PUNTOS DE LA HOJA "A" SIN NECESIDAD DE TECLEARLO A MANO.
4º seleccionar otro jugador y volver a repetir el proceso.
Muchas gracias.
Julio.
Para lo que me pides te mando una macro en la que estoy suponiendo que inician tus datos en el renglón 2, y que quieres mantener la relación de los renglones (el 2 de la hojaA corresponde al 2 de la hojaB) si algo no funciona, sólo dime.
Sub calcula_puntos()
'
' calcula_puntos Macro
' Macro grabada el 14/10/2002 por Eduardo Marañón
'
'
Sheets("hojaB").Select
Range("B2").Select
Sheets("hojaA").Select
Range("B2").Select
While ActiveCell.Value <> ""
Selection.Copy
Sheets("hojaB").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, -1).Select
' Aquí pídele el número de hoyo
ActiveCell.Offset(0, 2).Select
' Aquí pídele en número de golpes
ActiveCell.Offset(0, 1).Select
Selection.Copy
ActiveCell.Offset(1, -2).Select
Sheets("hojaA").Select
ActiveCell.Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveCell.Offset(1, -1).Select
Wend
End Sub
Estimado gualo:
Ha probado de todas las formas posibles la macro que me enviaste pero no realiza el resultado que busco.
Lo que hace la macro es calcularme puntuaciones, cosa que yo ya tengo hecho.
Lo único que quiero es que la puntuación que yo calcule en la hoja "b" me la pase a la hoja a "lista de jugadores" automáticamente sin necesidad de teclearla a mano, tal que luego seleccione otro jugador de la hoja "a" y pueda calcularle también la puntuación para que igualmente me lo pase automáticamente respetando el resultado del primer jugador.
Muchas gracias.
Julio.
No he encontrado la solución óptima, pero te van 2 opciones:
La primera es que metas el nombre del jugador en E2 y luego corres la macro (explicada en la segunda):
Sheets("hojaA").Select
Cells.Find(What:=Sheets("hojaB").Range("E2").Text, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
ActiveCell.Offset(0, 2).Value = Sheets("hojaB").Range("$D$21").Value
Sheets("hojaB").Select
La segunda es para que haga el proceso mientras la celda E2 no esté vacía, el problema es que no he visto cómo hacer para que te permita introducir el dato del jugador entre cada ciclo, (es lo que estoy poniendo hasta abajo):
Sub buscar()
While ActiveCell.Value <> ""
Sheets("hojaA").Select
' busca en la hojaA el nombre del jugador
Cells.Find(What:=Sheets("hojaB").Range("E2").Text, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
' Trae a la columna "C" el dato de la hojaB celda D21
ActiveCell.Offset(0, 2).Value = Sheets("hojaB").Range("$D$21").Value
Sheets("hojaB").Select
'Run "Letrero"
'Range("E2").Value = nombre_del_jugador
Wend
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas