Al escribir fórmulas debemos evitar siempre que podamos anidar funciones SI (sobre todo cuando tenemos información que se repite).
Por favor, prueba la siguiente fórmula:
=SI.ERROR(
LET(
id, B3,
fecha_ref, F3,
rango_ids, '[Base Snte 05 Coah 2.xlsx]Pagos'!$F$2:$F$10000,
rango_fechas, '[Base Snte 05 Coah 2.xlsx]Pagos'!$K$2:$K$10000,
rango_resultado, '[Base Snte 05 Coah 2.xlsx]Pagos'!$D$2:$D$10000,
diferencia, ABS(rango_fechas - fecha_ref),
filtro, (rango_ids = id) * diferencia,
min_dif, MIN.SI.CONJUNTO(diferencia, rango_ids, id),
fila, COINCIDIR(min_dif, filtro, 0),
INDICE(rango_resultado, fila)
),
"No encontrado")Coméntanos si funciona.
Por
Sergio, · publicado
Buenas Tardes
Tengo un problema con una macro que cree para ejecutar una consulta desde excel y que traiga los resultados en una celda en particular.
Hace meses la vengo usando y funcionaba perfecto, pero desde la semana pasada me tira este error:
RUN TIMER ERROR 1004 Application defined or objet defined error
y se tilda la siguiente sentencia
.Refresh BackgroundQuery:=False
Llevo toda una semana investigando que puede ser y no encuentro nada. Agradezco su ayuda *******!!!!
Dim varSQL
' OBTIENE EL NUMERO SIGUIENTE DE BASE
varSQL = Sheets("ArmadoQuery").Range("c23")
Sheets("Resultado").Select
Range("F15").Select
Selection.ClearContents
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER=SQL Server;SERVER=XXXXX;UID=XXXX;pwd=XXXX;DATABASE=XXXXX" _
, Destination:=Range("F15"))
.CommandText = varSQL
.Name = "Query from bi en bi01"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
Do While .Refreshing
DoEvents
Loop
End With
End Sub