Hola amigos Bakunos, les vengo a solicitar ayuda a todos para que me ayuden a solucionar un problema que tengo, el problema es el Siguiente:
En una Hoja de Excel tengo una nómina de personal que manejo que son un poquito más de 500 personas, en la otra hoja tengo un cuadro numérico que me sirve para ver con exactitud cuántas personas hay trabajando en cierto lugar y cuantas están en otras situaciones, el cuadro se parece a esto.
El Resto del cuadro que sigue a la continuación del primer cuadro
Tomando en cuenta que en la Hoja nómina de personal de donde se desprende la hoja numérica se toma en cuenta las siguientes Columnas,
Rango,
Destino,
Sexo,
Situación Administrativa, “Activo” solo los activos se quedan en el primer cuadro y los de diferente situación al de Activo se quedan en el segundo cuadro.
El problema es que cada uno de las personas independientemente de su rango puede estar en los diferentes Destinos.
Intente a ser un programa en Visual Basic 6.0 pero el problema es que hay que hacer demasiadas consultas para hacer y llenar estos cuadros.
Les dejo un poco de código.
DECLARO
Dim Destino As String
Dim Rango As String
Dim no As String
Dim SITUACIONACTUAL As String
'COLUMNA DIRECTOR GENERAL
Destino = "SAN JUAN DE DIOS"
Rango = "GERENTE GENERAL"
SITUACIONACTUAL = "ACTIVO"
no = "1"
If .State = 1 Then .Close
.Open "SELECT Datos.RANGO, Datos.DESTINO, Datos.x From Datos WHERE (((Datos.RANGO)='" & RANGO & "') AND ((Datos.DESTINO)='" & Destino & "') AND ((Datos.SITUACIONACTUAL)='" & SITUACIONACTUAL & "') AND ((Datos.x)=" & 1 & "))", Base, adOpenStatic, adLockOptimistic
Dim T2 As Integer
For x = 0 To .RecordCount - 1
T2 = T2 + !x
Next
'LT2.Caption = T2
'===========================================================================
'COLUMNA GERENTE GENERAL
Destino = "SAN JUAN DE DIOS"
RANGO = "GERENTE GENERAL"
SITUACIONACTUAL = "ACTIVO"
no = "1"
If .State = 1 Then .Close
.Open "SELECT Datos.RANGO, Datos.DESTINO, Datos.x From Datos WHERE (((Datos.RANGO)='" & RANGO & "') AND ((Datos.DESTINO)='" & Destino & "') AND ((Datos.SITUACIONACTUAL)='" & SITUACIONACTUAL & "') AND ((Datos.x)=" & 1 & "))", Base, adOpenStatic, adLockOptimistic
Dim T3 As Integer
For x = 0 To .RecordCount - 1
T3 = T3 + !x
Next
'LT3.Caption = T3
Lo que hace es recorrer fila por fila y me escribe el resultado en un cuadro de texto, pero son demasiadas consultas.
Quisiera saber si hay alguna forma en Excel o en el editor de visual basic que trae Excel para hacer un poquito más fácil esto.
En Excel utilice esta fórmula =SI(Y('NOM. PERS.'!B2="Director General";'NOM. PERS.'!D2="M";'NOM. PERS.'!E2="San Juan de Dios";'NOM. PERS.'!H2="ACTIVO"= 1,””) para que funcionara y si funcionó pero tuve que utilizar varias hojas que ocultaba donde jalaba toda la información pero el problema que cuando quería guardar la información tardaba alrededor de 35 a 45 minutos o si no se colgaba Excel.
Desde ya muchas gracias a todos los bakunos que me pueden ayudar, Saludos.
En una Hoja de Excel tengo una nómina de personal que manejo que son un poquito más de 500 personas, en la otra hoja tengo un cuadro numérico que me sirve para ver con exactitud cuántas personas hay trabajando en cierto lugar y cuantas están en otras situaciones, el cuadro se parece a esto.
El Resto del cuadro que sigue a la continuación del primer cuadro
Tomando en cuenta que en la Hoja nómina de personal de donde se desprende la hoja numérica se toma en cuenta las siguientes Columnas,
Rango,
Destino,
Sexo,
Situación Administrativa, “Activo” solo los activos se quedan en el primer cuadro y los de diferente situación al de Activo se quedan en el segundo cuadro.
El problema es que cada uno de las personas independientemente de su rango puede estar en los diferentes Destinos.
Intente a ser un programa en Visual Basic 6.0 pero el problema es que hay que hacer demasiadas consultas para hacer y llenar estos cuadros.
Les dejo un poco de código.
DECLARO
Dim Destino As String
Dim Rango As String
Dim no As String
Dim SITUACIONACTUAL As String
'COLUMNA DIRECTOR GENERAL
Destino = "SAN JUAN DE DIOS"
Rango = "GERENTE GENERAL"
SITUACIONACTUAL = "ACTIVO"
no = "1"
If .State = 1 Then .Close
.Open "SELECT Datos.RANGO, Datos.DESTINO, Datos.x From Datos WHERE (((Datos.RANGO)='" & RANGO & "') AND ((Datos.DESTINO)='" & Destino & "') AND ((Datos.SITUACIONACTUAL)='" & SITUACIONACTUAL & "') AND ((Datos.x)=" & 1 & "))", Base, adOpenStatic, adLockOptimistic
Dim T2 As Integer
For x = 0 To .RecordCount - 1
T2 = T2 + !x
Next
'LT2.Caption = T2
'===========================================================================
'COLUMNA GERENTE GENERAL
Destino = "SAN JUAN DE DIOS"
RANGO = "GERENTE GENERAL"
SITUACIONACTUAL = "ACTIVO"
no = "1"
If .State = 1 Then .Close
.Open "SELECT Datos.RANGO, Datos.DESTINO, Datos.x From Datos WHERE (((Datos.RANGO)='" & RANGO & "') AND ((Datos.DESTINO)='" & Destino & "') AND ((Datos.SITUACIONACTUAL)='" & SITUACIONACTUAL & "') AND ((Datos.x)=" & 1 & "))", Base, adOpenStatic, adLockOptimistic
Dim T3 As Integer
For x = 0 To .RecordCount - 1
T3 = T3 + !x
Next
'LT3.Caption = T3
Lo que hace es recorrer fila por fila y me escribe el resultado en un cuadro de texto, pero son demasiadas consultas.
Quisiera saber si hay alguna forma en Excel o en el editor de visual basic que trae Excel para hacer un poquito más fácil esto.
En Excel utilice esta fórmula =SI(Y('NOM. PERS.'!B2="Director General";'NOM. PERS.'!D2="M";'NOM. PERS.'!E2="San Juan de Dios";'NOM. PERS.'!H2="ACTIVO"= 1,””) para que funcionara y si funcionó pero tuve que utilizar varias hojas que ocultaba donde jalaba toda la información pero el problema que cuando quería guardar la información tardaba alrededor de 35 a 45 minutos o si no se colgaba Excel.
Desde ya muchas gracias a todos los bakunos que me pueden ayudar, Saludos.