Busqueda en excel

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
eporti
Mensajes: 15
Registrado: 11 Jun 2014, 00:11

Busqueda en excel

Mensaje por eporti »

Hola

Soy nuevo en el foro y usando Autoit, estoy tratando de hacer un Script que me busque cierto numero dentro de un grupo de archivos de excel y al encontrarla me seleccione toda la fila donde se encuentra ese dato y mandar la info a un label del Script. Hasta ahorita he podido encontrar el dato dentro de el grupo de archivos y obtenido su direccion pero no puedo haceer que me seleccione la fila completa donde se encuentra el dato para asignar la info a un label.

Agradesco su ayuda.
Saludos
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Busqueda en excel

Mensaje por Chefito »

Hombre, lo que querrás hacer es coger los datos que haya en toda la fila donde se encuentra ese dato buscado, no? Para eso no hace falta señalar la fila.
Lo que quieres se hace de distinta forma según la información que tengas. Lo suyo es al encontrar ese dato, sacar el número de fila donde se encuentra, y celda a celda conseguir los datos de cada una. Se haría con un bucle for...next, y yo almacenaría el contenido en una variable array.
Esto anterior se puede hacer de dos formas, una si sabes que celdas de esa fila son las que tienen datos, y otra si no lo sabes exactamente y tienes que recorrerla hasta que no hallan datos.

Dame la información que te digo, pon algo del código que llevas hecho y te ayudo.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
eporti
Mensajes: 15
Registrado: 11 Jun 2014, 00:11

Re: Busqueda en excel

Mensaje por eporti »

Como te decia, hasta ahorita puedo saber si hay un dato igual al buscado y obtener el directorio donde se encuentra pero en realidad no se como
activarlo y obtener el numero de fila para poder de ahi extraer los demas datos que necesito.

---------------------------------------------------------------------------------------------------------------------------------------------------------
$oBook=$oExcel.workbooks.open($directorio,0,1)
$oExcel.cells.find(GUICtrlRead($txtabuscar),Default,Default,Default,Default,Default,2).Activate
$row = $oExcel.ActiveCell.Address
$oExcel.ActiveCell.entirerow.copy
$row = ClipGet()
If IsObj($oExcel.cells.find(GUICtrlRead($txtabuscar),$oExcel.ActiveCell,Default,Default,Default,Default,2)) Then
_GUICtrlListView_addItem($ListView1,$countListview,0)
_GUICtrlListView_AddSubItem($ListView1,$contador-1,$directorio,1,5)
_GUICtrlListView_AddSubItem($ListView1,$contador-1,GUICtrlRead($txtabuscar),2)
EndIf
$oExcel.workbooks.close
---------------------------------------------------------------------------------------------------------------------------------------------------------
Gracias.
eporti
Mensajes: 15
Registrado: 11 Jun 2014, 00:11

Re: Busqueda en excel

Mensaje por eporti »

En el codigo anterior inclui las filas 3,4 y 5 donde intente activar la celda del dato buscado y tratar de sacar el numero de fila, pero no funciono.

Gracias
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Busqueda en excel

Mensaje por Chefito »

Mmmmmm....sustituye en tu código esto que te pongo a continuación:

Código: Seleccionar todo

$resultadoBusqueda=$oExcel.cells.find($txtabuscar,Default,Default,Default,Default,Default,1).Activate
If $resultadoBusqueda Then
	$numcolumna=$oExcel.activecell.row
	For $n=1 To 20
		ConsoleWrite("El valor de la fila " & $numcolumna & " y columna " & $n & " es:  " & $oExcel.cells($numcolumna,$n).value & @cr)
	Next
EndIf
En $resultadoBusqueda se almacena el resultado de la búsqueda. Si encuentra la expresión/palabra, se le asigna true, sino, no se le asigna nada.
La siguiente condición te indica que si la búsqueda ha sido satisfactoria, que ejecute el código de dentro (el recorrido de la fila).
En $numcolumna se almacena el número de columna donde se encuentra la celda activa, y el bucle for.....next recoge el valor de la fila donde esta el valor encontrado. He puesto un recorrido de 20 celdas por poner algo. Adáptalo tu a lo que quieras. El resultado te lo da en la consola del scite.
Esto es lo básico. Puedes hacer que recoja solamente los valores de las celdas donde haya algo con un simple if:

Código: Seleccionar todo

if $oExcel.cells($numcolumna,$n).value<>"" then ConsoleWrite("El valor de la fila " & $numcolumna & " y columna " & $n & " es:  " & $oExcel.cells($numcolumna,$n).value & @cr)
También se le puede decir que las recorra hasta encontrar alguna celda en blanco, etc. No se que es lo que te interesará. Ves probando cosas :smt024 .

Por cierto, en la línea del find, el último argumento (tu pones un 2), debe ser un verdadero o falso. Con el número 2 indicas que es verdadero, pero es más correcto poner un 1 o true. Y por si acaso no sabías para que es este parámetro, decirte que con un true debe coincidir mayúsculas y minúsculas en la búsqueda de la expresión/palabra (búsqueda sensitiva). Logicamente con falso no (búsqueda no sensitiva) :smt002 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
eporti
Mensajes: 15
Registrado: 11 Jun 2014, 00:11

Re: Busqueda en excel

Mensaje por eporti »

Excelente muchas gracias, ya pude optener lo que necesitaba.
Responder