03/04/2011, 12:40
|
| | | Fecha de Ingreso: marzo-2007 Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 9 meses Puntos: 88 | |
Buscar máximos en una macro mediante "cells.find" excel 2007 Se te olvidó mencionar si el código te ha funcionado correctamente pues, de no ser así, entonces la estructura de tus datos no es la que has mostrado en este debate.
De todos modos te comento:
.) El código se ejecuta teniendo activa la hoja en la que se encuentra la que llamas "tabla1"
.) Mediante el
Código:
.Formula = "= SUMPRODUCT( (A1 = " & _
Rng.Address(External:=True) & ")*(B1 = " & _
Rng.Offset(, 1).Address(External:=True) & ") * ROW(" & _
Rng.Offset(, 2).Address(External:=True) & ") )"
ponemos en la columna G (es la columna auxiliar que elegí utilizar) la fórmula: = SUMAPRODUCTO( (A1 = Daten!$A$1:$A$15)*(B1 = Daten!$B$1:$B$15) * FILA(Daten!$C$1:$C$15) )
Esta fórmula nos dará: "0" si los datos de las columnas A y B no están en la que llamas "tabla2", mientras que te brindará el número de fila cuando los datos de las columnas A y B (de la tabla "tabla1") se encuentren en la "tabla2".
.) Por su parte, el
Código:
.Offset(, -4).Formula = "= IF(" & _
.Cells(1).Address(False, False) & "=0, """", INDEX(" & _
Rng.Offset(, 2).Address(External:=True) & ", " & _
.Cells(1).Address(False, False) & ") )"
pone en la columna C la fórmula: = SI(G1=0; ""; INDICE(Daten!$C$1:$C$15; G1) )
Esta fórmula nos dará: "(vacío)" si la fila correspondiente de la columna G contiene un "0", mientras que te brindará el dato buscado en caso contrario.
El resto de las líneas de código te deberían ser de más sencilla interpretación. Sin embargo, es importante que comprendas que la potencia y rapidez de este código lo brinda el Excel y no el VBA.
Saludos, Cacho. |