Ver Mensaje Individual
  #18 (permalink)  
Antiguo 03/04/2011, 12:40
Avatar de mrocf
mrocf
 
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo 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.