Jump to content

Ayuda nuevamente con Excel


Recommended Posts

Necesito ayuda con excel tengo el codigo para hacerlo pero no se como hacerlo para seleccionar dentro del archivo una hoja X.

 

este es el codigo

Sub leer_fichero_excel2()
'Ocultamos el procedimiento
Application.ScreenUpdating = False
'Si hay errores, que siga
On Error Resume Next
'Definimos las variables:
'indicamos la ruta del fichero donde nos conectaremos,
'y que en este caso, será la misma que
'la de este fichero que contiene el macro
ruta = ThisWorkbook.Path
fichero = "Planilla_Febrero_CNCP 2011-2.xls"
'Creamos el objeto conexión
Set Conn = New ADODB.Connection
Conn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & ruta & "\" & fichero
'Creamos el objeto recordset
Set rs = New ADODB.Recordset
'Seleccionamos los datos
Sql = "SELECT * FROM C31:M34"

'Escribimos los datos
rs.Open Sql, Conn, adOpenStatic, adLockOptimistic
'Traemos los datos, para lo cual
'comenzamos con los encabezados,
'y los escribiremos a partir de la celda A1
Range("A1").Select
ActiveCell = rs.Fields.Item(0).Name
ActiveCell.Offset(0, 1) = rs.Fields.Item(1).Name
ActiveCell.Offset(0, 2) = rs.Fields.Item(2).Name
ActiveCell.Offset(0, 3) = rs.Fields.Item(3).Name
ActiveCell.Offset(0, 4) = rs.Fields.Item(4).Name
ActiveCell.Offset(0, 5) = rs.Fields.Item(5).Name
ActiveCell.Offset(0, 6) = rs.Fields.Item(6).Name
ActiveCell.Offset(0, 7) = rs.Fields.Item(7).Name
ActiveCell.Offset(0, 8) = rs.Fields.Item(8).Name
ActiveCell.Offset(0, 9) = rs.Fields.Item(9).Name
ActiveCell.Offset(0, 10) = rs.Fields.Item(10).Name
ActiveCell.Offset(0, 11) = rs.Fields.Item(11).Name
'ponemos en negrita los encabezados
Range("A1:K1").Font.Bold = True
'Ahora seguimos con los datos, hasta acabar
'con los datos que nos devuelve la consulta
Do While Not rs.EOF
    ActiveCell.Offset(1, 0) = rs(0)
    ActiveCell.Offset(1, 1) = rs(1)
    ActiveCell.Offset(1, 2) = rs(2)
    ActiveCell.Offset(1, 3) = rs(3)
    ActiveCell.Offset(1, 4) = rs(4)
    ActiveCell.Offset(1, 5) = rs(5)
    ActiveCell.Offset(1, 6) = rs(6)
    ActiveCell.Offset(1, 7) = rs(7)
    ActiveCell.Offset(1, 8) = rs(8)
    ActiveCell.Offset(1, 9) = rs(9)
    ActiveCell.Offset(1, 10) = rs(10)
    ActiveCell.Offset(1, 11) = rs(11)
'nos movemos al siguiente registro
    rs.MoveNext
    'bajamos una fila
    ActiveCell.Offset(1, 0).Select
Loop
'cerramos y limpiamos los objetos
rs.Close
Conn.Close
Set rs = Nothing
Set Conn = Nothing
'Mostramos el procedimiento
Application.ScreenUpdating = True
End Sub

 

con ese codigo puedo hacer que leea desde otro archivo pero no puedo indicarle que saque la informacion de una hoja X con esta parte es donde selecciona el rango

 

'Seleccionamos los datos

Sql = "SELECT * FROM C31:M34"

 

si alguien me puede ayudar porfa

 

 

 

 

Link to comment
Share on other sites

oka vale, gracias, te puedo hacer otra consulta si puedes porfa, sabes necesito contar con dos condiciones y ademas que no me cunte las celdas vacias ejemplo

 

sea la siguiente hoja:

____________________________

___|__A__|___B___|__C__|__D__|

_1_|__A__|_AZUL__|_____|_____|

_2_|__B__|_ROJO__|_____|_____|

_3_|__A__|_Verde__|_____|_____|

_4_|__A__|_Verde__|_____|_____|

_5_|__A__|__Rojo__|_____|_____|

_5_|_____|________|_____|_____|

 

 

entonces quiero que cuente todo de la columna B menos el AZUL y los vacios es decir seria el total 4 los dos rojos y los dos verdes, depues de eso quiero que se valide de eso que conto con la columna A me valide los que son solo A, al final la fomula me tendria que entregar 3 como total, si me puedes ayudar porfa con esa formula

Link to comment
Share on other sites

Usando SQL?

SELECT COUNT(A) FROM [Hoja2$A2:B6] WHERE B <> 'AZUL'

Con eso tienes el primer resultado, osea, 4...

 

Y para lo segundo y too junto:

SELECT COUNT(CASE B WHEN 'AZUL' THEN NULL ELSE B END), COUNT(CASE WHEN A = 'A' AND B <> 'AZUL' THEN A ELSE NULL END)
FROM [Hoja2$A2:B6]

 

No sé si es con cremillas o comillas...

 

Si no es con SQL, avisa para hacer la fórmula de Excel...

 

Salu2.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...