Contador que si incremente si...

Saludos.
Quisiera saber si me puede ayudar por favor con esto:
Tengo una columna UCI, que es el número de días que una persona está en Unidad de Cuidados Intensivos. Este campo puede estar vacío o con valor de 0. Este campo lo ingreso por un formulario. Hasta ahí todo muy bien. Pero necesito que la columna inmediatamente siguiente cuente cada vez que el campo UCI sea diferente de 0, o vacío.
Algo así como lo siguiente (esto lo realicé manualmente):
UCI Cont UCI
1 1
3               2
0
7 3
Muchas gracias por cualquier ayuda que me puedan prestar.
1

1 respuesta

Respuesta
1
Ante todo recibe mis cordiales saludos. Con respecto a la pregunta que planteastes, necesitas las siguientes lineas de código: Te lo voy a explicar con el mismo ejemplo que planteastes:
UCI ContUCI
1 1
3 2
0
7 3
Lo primero que tienes que hacer es entrar al editor de visual basic, y crear un formulario; donde insertaras un Objeto de tipo TextBox (Caja de Texto) y un Objeto CommandButtom(botón de comando), y a continunacion tienes que copiar el siguiente código:
Private Sub CommandButton1_Click()   ' Evento clic del boton de comando ejecuta los procedimientos de la clase Data
Data      ' Nombre de la clase
End Sub
Public Sub Data() ' La clase data ejecuta los procedimiento segun un orden.
Call datos   'call es una instruccion que llama al procedimiento llamado datos.
Call contar  'calla es una intruccion que llama al procedimiento llamado contar
End Sub
Private Sub datos()
Dim ultfila, j, i As Double
Dim insert As Double
insert = Val(TextBox1.Text) ' Variable insert Guarda el valor que has ingersado en el boton textbox, los datos son de tipo numero por eso la variable insert es de tipo double.
ultfila = ActiveSheet.range("A65536").End(xlUp).Row    'La Variable ultfila guardael ultimo numero de la fila donde ha ingresado el dato. 
    For j = 1 To ultfila  ' variable j va a recorrer hasta el ultima fila donde se ha ingresado los datos.
        i = j + 1 ' Varible i guarda la fila donde se va ingresar el dato.
    Next
       Cells(i, 1). FormulaR1C1 = insert   ' cundo i=2, va a guardar el dato que has ingresado en la fila 2
   TextBox1.Text = "" ' sirve para que cada vez que ingreses un dato limpie el textbox para que ingreses nuevo dato.
End Sub
Private Sub contar()   ' El procedimiento contar, sirve para evaluar cada fila donde has ingresado los datos, si el dato es diferente a cero cuenta el dato, si es 0 no lo cuenta.
Dim celda, cont As Double
Dim i, ultfila  As Double
ultfila = ActiveSheet.range("A65536").End(xlUp).Row
For i = 2 To ultfila   ' i empieza en 2 porque el primer dato sera ingresado en la fila 2
celda = Cells(i, 1)  ' la variable celda guarda el dato para evaluar si es diferente a 0 o es 0
If Cells(i, 1) <> 0 Then ' condiciones si el dato que has ingresado en la fila 2 es diferente de 0 que cuente, si no que no cuente el dato
cont = cont + 1 ' variable contador empieza a contar la cantidad de veces que los datos son diferentes a 0
Cells(i, 2). FormulaR1C1 = cont ' la cantidad de veces que va a contar se va a mostrar en la columna 2 de la fila 1
Else
cont = cont  ' si en caso es la celda de la fila 2 es 0 contador no incrementa su valor.
End If
Next
End Sub
Espero haberte ayudado, cualquier consulta, solo me escribes, al foro, no te olvides de finalizar la pregunta. Saludos.
-----------------------------------------
Private Sub CommandButton1_Click() ' Evento clic del objeto boton ejecutara los procedimiento segun el orden establecido.
Data ' Nombre del primer procedimiento, sirve para almacenar los datos que vas ingresar en el textbox en las respectivas celda.
Contar ' Nombre del segundo procedimiento, sirve para evaluar que datos has ingresado, son mayores a 0 y empieza a contarlos, caso contrario no los cuenta.
End Sub
Private Sub CommandButton1_Click()
Data
End Sub
Public Sub Data()
Call datos
Call contar
End Sub
Private Sub datos()
Dim ultfila, j, i As Double
Dim insert As Double
insert = Val(TextBox1.Text)
ultfila = ActiveSheet.range("A65536").End(xlUp).Row
    For j = 1 To ultfila
        i = j + 1
    Next
       Cells(i, 1).FormulaR1C1 = insert
   TextBox1.Text = ""
End Sub
Private Sub contar()
Dim celda, cont As Double
Dim i, ultfila  As Double
ultfila = ActiveSheet.range("A65536").End(xlUp).Row
For i = 2 To ultfila
celda = Cells(i, 1)
If Cells(i, 1) <> 0 Then
cont = cont + 1
Cells(i, 2).FormulaR1C1 = cont
Else
cont = cont
End If
Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas