Página 1 de 1

Busqueda en excel

Publicado: 12 Jun 2014, 01:49
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

Re: Busqueda en excel

Publicado: 12 Jun 2014, 22:52
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.

Re: Busqueda en excel

Publicado: 13 Jun 2014, 17:26
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.

Re: Busqueda en excel

Publicado: 13 Jun 2014, 17:28
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

Re: Busqueda en excel

Publicado: 14 Jun 2014, 20:35
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.

Re: Busqueda en excel

Publicado: 18 Jun 2014, 02:16
por eporti
Excelente muchas gracias, ya pude optener lo que necesitaba.