Como muchos sabrán, las funciones BDContar y BDContara de Excel, cuentas
columnas que coinciden entre sí con algún criterio en particular, pero yo,
que siempre ando al revés que muchos, necesito contar registros o filas que
coincidan en algún campo o columna. Ejemplo:
A B C D E F
Req SI SI NO SI SI
4 100 HH JJ 1/1/6 GRACIAS
3 101 JJ 2/1/5 POR
3 102 HJ JI LA
4 103 KK 3/7/6 AYUDA
Entonces quiero contar las filas que coincidan en el registro inicial REQ
(Requerido), con SI, esto lo colocaría al comienzo de cada fila, para saber
si llenó todos los campos requeridos. ¿Se entiende?
Por ejemplo en el registro 100, se observa un 4 al comienzo, porque de los
campos obligatorios, ha llenado 4, aunque en la realidad ha llenado todos.
En el registro 101, aunque llenó 4 campos, uno no es obligatorio, por lo que
en realidad tiene 3 campos obligatorios llenados.
Entonces la función BDContara no me sirve porque cuenta columnas y no filas,
o por lo menos eso he probado.
Intenté poniendo TRASPUESTA en la matriz, pero da error, por lo que no pude.
Al final cree una pequeña función en la hoja así:
Function ContarFila(FilaRango, Criterio)
If ActiveSheet.ProtectContents = True Then
ActiveSheet.Unprotect
Flag = True
Else
Flag = False
End If
LargoRango = FilaRango.Columns.Count
LargoCriterio = Criterio.Columns.Count
FilaRango.Select
Selection.Copy
Range("IR8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True
Criterio.Select
Selection.Copy
Range("IS8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True
Range("IQ7").Value = "Req"
Range("IR7").Value = "Datos"
Range("IS7").Value = "Req"
Range("IQ8").Value = "SI"
Range("IQ9").Select
Formula = "ÜOUNTA(R[-2]C[1]:R[" & LargoRango - 1 &
"]C[2],""Datos"",R[-2]C:R[-1]C)"
ActiveCell.FormulaR1C1 = Formula
ContarFila = Range("IQ9").Value
If Flag = True Then
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:= _
True, AllowSorting:=True, AllowFiltering:=True
End If
End Function
Funciona, porque lo que hace es pescar la fila a contar y la copia
traspuesta a un espacio en blanco de la hoja, luego, copia la fila de
criterio al lado de la otra, también traspuesta, y coloco un criterio al lado
para la función BDcontara, entonces, pongo la formula y recogo el resultado,
esto lo devuelvo y podría eventualmente borrar la zona de cálculo. El
problema es que se nota el efecto de copiar los registros a otro lado y crea
una sensación fea cuando llenas la base de datos.
Me gustaría saber si alguien caperuzo, ha ideado otra forma, quizás con el
uso de Array pueda ser, no he probado aún, pero después como hago para contar
con criterio, no sé la expresión o función de Visual que me sirva como
BDContar.
Gracias por cualquier sugerencia...
Nos vemos en la cumbre...
www.assalamo-alaikum.com
Muchísimas Gracias por vuestra ayuda.
CSICMEL Portales y Páginas web
www.assalamo-alaikum.com
www.aquiopinoyo.cl
Leer las respuestas