contar.si por codigo

23/06/2005 - 19:40 por Brel | Informe spam
Hola grupo,
intento usar varias funciones de excel por código en vez de asignarle
formula a una celda (rango de celdas) pero no lo consigo. Por ejemplo:
=SI(CONTAR.SI($B$6:B6;B6)-1=0;CONTAR.SI($B$6:$B$105;B6);"")
en b6:b102 (la mayoyia libres, o sea el rango es variable) hay fechas
de mas antigua a mas moderna y quiero contar cuantas veces se repiten
las fechas.
Gracias a todos -as.
Brel

Preguntas similare

Leer las respuestas

#1 KL
24/06/2005 - 01:14 | Informe spam
Hola Brel,

1) No encuentro mucho sentido en la formula que expones
2) [$B$6:B6;B6)-1=0] es igual a [$B$6:B6;B6)=1]
3) Recuerda que en VBA debes usar las funciones en ingles si usas la
propiedad Formula, FormulaR1C1, etc.. De lo contrario podrias usar
FormulaLocal o FomulaR1C1Local
4) Si quieres que al introducir la formula mediante codigo esa sea relativa,
o sea que los rangos se actualices segun la posicion de la celda, es mejor
usar la notacion R1C1. Tambien podrias usar la notacion normal, pero
introduciendo variables para los valores que cambian.
5) ?Por que no expones el macro que intyentas usar?

Saludos,
KL


3) Si quieres que
"Brel" wrote in message
news:
Hola grupo,
intento usar varias funciones de excel por código en vez de asignarle
formula a una celda (rango de celdas) pero no lo consigo. Por ejemplo:
=SI(CONTAR.SI($B$6:B6;B6)-1=0;CONTAR.SI($B$6:$B$105;B6);"")
en b6:b102 (la mayoyia libres, o sea el rango es variable) hay fechas
de mas antigua a mas moderna y quiero contar cuantas veces se repiten
las fechas.
Gracias a todos -as.
Brel
Respuesta Responder a este mensaje
#2 Brel
24/06/2005 - 19:39 | Informe spam
Hola KL, un extracto porque es bastante largo...

For i = 1 To Range("CA26").Value For para dar Nº a las fechas
existentes en histórico, obviamente lo que hay a la derecha coge ese rango
variable
Cells(5 + i, 1).Select | aqui tan solo numera
las partidas a visualizar.
ActiveCell.Value = i |
Next i

For w = 1 To Range("CA26").Value For que va extrayendo los datos de la
hoja Historia
If w > Range("CA26").Value Then GoTo Cancelaciones
Range("B65536").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, -1).Range("B1").Select
ActiveCell.Value = Worksheets("HistoriA").Cells(Cells(w + 29,
e).Value, 1).Value
Range("D65536").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, -3).Range("D1").Select
If e = "" Then GoTo Cancelaciones
ActiveCell.Value = Worksheets("HistoriA").Cells(Cells(w + 29,
e).Value, Cells(w + 29, e + 1).Value + 2).Value
Range("H65536").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, -7).Range("H1").Select
ActiveCell.Value = Worksheets("HistoriA").Cells(Cells(w + 29,
e).Value, Cells(w + 29, e + 1).Value + 3).Value
Range("F65536").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, -5).Range("F1").Select
ActiveCell.Value = Worksheets("HistoriA").Cells(Cells(w + 29,
e).Value, Cells(w + 29, e + 1).Value + 1).Value
If Cells(w + 5, 6).Value > 0 Then
Cells(w + 5, 5) = Cells(w + 5, 4).Value / Cells(w + 5, 6).Value
Else
Cells(w + 5, 5).Value = 0
End If
Cells(w + 5, 13).Select

AQUI sería donde pondria con codigo lo que tengo en las celdas M6 a M102:
'=SI(CONTAR.SI($B$6:B6;B6)-1=0;CONTAR.SI($B$6:$B$102;B6);"")
y copiado hasta la celda 102. Pero si hay 4 filas solo con datos esto no es
mas que hacer que pese el libro mas de lo debido, por eso quiero pasar a
codigo las formulas que tengo en las celdas cuyos rangos pueden ser
variables. Y no atino con ello:

[ERROR] If COUNT.IF(Range(Cells(6, 2), Cells(w + 5, 2)), Cells(w + 5,
2)) - 1 = 0 Then
ActiveCell.Value = COUNT.IF(Range(Cells(6, 2),
Cells(102, 2)), Cells(w + 5, 2))
Else
ActiveCell.Value = ""
End If
QUEDANDOSE en la linea [ERROR] 424 en tiempo de ejecucion: Se requiere un
objeto...

Gracias por tu atencion.
Brel


"KL" escribió en el mensaje
news:%
Hola Brel,

1) No encuentro mucho sentido en la formula que expones
2) [$B$6:B6;B6)-1=0] es igual a [$B$6:B6;B6)=1]
3) Recuerda que en VBA debes usar las funciones en ingles si usas la
propiedad Formula, FormulaR1C1, etc.. De lo contrario podrias usar
FormulaLocal o FomulaR1C1Local
4) Si quieres que al introducir la formula mediante codigo esa sea
relativa, o sea que los rangos se actualices segun la posicion de la
celda, es mejor usar la notacion R1C1. Tambien podrias usar la notacion
normal, pero introduciendo variables para los valores que cambian.
5) ?Por que no expones el macro que intyentas usar?

Saludos,
KL


3) Si quieres que
"Brel" wrote in message
news:
Hola grupo,
intento usar varias funciones de excel por código en vez de asignarle
formula a una celda (rango de celdas) pero no lo consigo. Por ejemplo:
=SI(CONTAR.SI($B$6:B6;B6)-1=0;CONTAR.SI($B$6:$B$105;B6);"")
en b6:b102 (la mayoyia libres, o sea el rango es variable) hay fechas
de mas antigua a mas moderna y quiero contar cuantas veces se repiten
las fechas.
Gracias a todos -as.
Brel


Respuesta Responder a este mensaje
#3 KL
24/06/2005 - 23:43 | Informe spam
Hola Brel,

Prueba esto:

For w = 1 To 98
With ActiveSheet
Set c = .Cells(w + 5, 13).Offset(, -11)
c.Offset(, 11).Value = _
IIf(Application.CountIf(Range(.Cells(6, 2), _
c), c) = 1, Application.CountIf(.Range("B6:B102"), c), "")
End With
Next w

Saludos,
KL
Respuesta Responder a este mensaje
#4 KL
24/06/2005 - 23:50 | Informe spam
Hola otra vez,

version mas limpia:

Sub Test()
For w = 1 To 98
With ActiveSheet
Set c = .Cells(w + 5, 2)
c.Offset(, 11).Value = _
IIf(Application.CountIf(Range(.Cells(6, 2), c), c) = 1, _
Application.CountIf(.Range("B6:B102"), c), "")
End With
Next w
End Sub

Saludos,
KL



"KL" wrote in message
news:
Hola Brel,

Prueba esto:

For w = 1 To 98
With ActiveSheet
Set c = .Cells(w + 5, 13).Offset(, -11)
c.Offset(, 11).Value = _
IIf(Application.CountIf(Range(.Cells(6, 2), _
c), c) = 1, Application.CountIf(.Range("B6:B102"), c), "")
End With
Next w

Saludos,
KL

Respuesta Responder a este mensaje
#5 Brel
25/06/2005 - 08:03 | Informe spam
Chapeau, KL...
Intentar pasar a codigo las formulas que tenia en celdas (con rangos
variables) me esta dando mas de un quebradero de cabeza.
Ahora intento que en el Rango N sume el total cliente y me bloqueo con
SUMAPRODUCTO:
=SI(M10=1;D10;SI(M10<>"";SUMAPRODUCTO(($B$6:$B$105±0)*$D$6:$D$105);""))
Modificando tu codigo seria:
For w = 1 To e
With ActiveSheet
Set c = .Cells(w + 5, 2)
c.Offset(, 11).Value = _
IIf(Application.CountIf(Range(.Cells(6, 2), c), c) = 1, _
Application.CountIf(.Range("B6:B102"), c), "")
If c.Offset(, 11).Value = 1 Then
c.Offset(, 12).Value = c.Offset(, 2).Value
ElseIf c.Offset(, 11).Value > 1 Then
c.Offset(, 12).Value =
End If
End With
Next w

Gracias anticipadas.
Brel
"KL" escribió en el mensaje
news:%
Hola otra vez,

version mas limpia:

Sub Test()
For w = 1 To 98
With ActiveSheet
Set c = .Cells(w + 5, 2)
c.Offset(, 11).Value = _
IIf(Application.CountIf(Range(.Cells(6, 2), c), c) = 1, _
Application.CountIf(.Range("B6:B102"), c), "")
End With
Next w
End Sub

Saludos,
KL



"KL" wrote in message
news:
Hola Brel,

Prueba esto:

For w = 1 To 98
With ActiveSheet
Set c = .Cells(w + 5, 13).Offset(, -11)
c.Offset(, 11).Value = _
IIf(Application.CountIf(Range(.Cells(6, 2), _
c), c) = 1, Application.CountIf(.Range("B6:B102"), c), "")
End With
Next w

Saludos,
KL





Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida