[RESUELTO] split ???

Discute sobre la aplicación de hojas de cálculo
Responder
mundoloco
Mensajes: 30
Registrado: Jue Sep 05, 2013 2:43 pm

[RESUELTO] split ???

Mensaje por mundoloco »

Buenas tardes a todos
Estoy trabajando con un programa en apache calc que me tome nombres y me los separe por nombres y apellidos en diferentes celdas, es de anotar que no todos los nombres son de dos nombres y dos apellidos entonces me puedo encontrar con que hay un nombre con un solo nombre y un apellido o un solo nombre y dos apellidos, Para separar los nombres y apellidos utilizo Split y lógicamente abro una matriz de 4 espacios que van de 0-3 pero, aca radica mi problema que cuando el nombre no ocupa los 4 espacios de la matriz de Split el código de colocación de cada nombre y apellido en cada celda recorre cada uno de los espacios de la matriz y no encuentra valores en el último espacio me saca un error y trato de preguntar primero al último espacio si tiene o no valor con un IF no me deja que hago. Hay les dejo algo de código. Claro que si todos los nombres fueran de 4 frases es decir de 2 apellidos y dos nombres todo funcionaria a la maravilla pero nada es perfecto.

Código: Seleccionar todo

REM  *****  BASIC  *****

Sub Main
dim a(3)
dim x as integer, i as integer, y as integer, fin as integer, ss as integer
dim hoj as object, cel as object
dim str as string
x=0:y=0:fin=0
hoj = thiscomponent.sheets(1)
rem cel =hoj.gecellbyposition(x,y)
fin =val(inputbox ("por favor ingresa el nùmero de nombres"))-1

for i=0 to fin
str =hoj.getcellbyposition(0,i).getformula
a()= split(str)
	If a(3)<> "NULL" then rem he intentado si <> NULL si ="" con todo y nada 
	ss=ss+1
	else
	a(3)="s"
	end if
hoj.getcellbyposition(1,i).setformula(a(0))
hoj.getcellbyposition(2,i).setformula(a(1))
hoj.getcellbyposition(3,i).setformula(a(2))
hoj.getcellbyposition(4,i).setformula(a(3)) rem si el nombre solo tiene tres palabras aca me muestra el error
next
msgbox ("todo esta consumado")
End Sub
Última edición por SLV-es el Sab Dic 21, 2013 12:08 pm, editado 1 vez en total.
Razón: Marcado como RESUELTO; deduzco que es así por los comentarios del usuario
MundoLocowindow 7 ultimate y la version del ooo 4.0.0
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: split ???

Mensaje por mauricio »

Usa

Código: Seleccionar todo

UBound(matriz)
para conocer el limite superior de tu matriz...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
FJCC-ES
Mensajes: 873
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: split ???

Mensaje por FJCC-ES »

Otro método:

Código: Seleccionar todo

Sub Main2
'dim a(3)
dim b(0)
dim x as integer, i as integer, y as integer, fin as integer, ss as integer
dim hoj as object, cel as object
dim str as string
x=0:y=0:fin=0
hoj = thiscomponent.sheets(1)
rem cel =hoj.gecellbyposition(x,y)
fin =val(inputbox ("por favor ingresa el nùmero de nombres"))-1

for i=0 to fin
	str =hoj.getcellbyposition(0,i).getString
	a()= split(str)
	range = hoj.getCellrangeByPosition(1,i,UBOUND(a) + 1, i)
	b(0) = a
	range.DataArray = b 'DataArray es una matriz de matrices
next
msgbox ("todo esta consumado")
End Sub
mundoloco
Mensajes: 30
Registrado: Jue Sep 05, 2013 2:43 pm

Re: split ???

Mensaje por mundoloco »

Para mis amigos MAURICIO Y FJCC-ES gracias por sus aportes, ya introduje sus sugerencias a mi codigo y efectivamente era la solución aunque iva acompañado de otra función importante para poder que me funcionara esta función era la trim$ y una serie de preparaciones de los nombres que he estado implementando en el código para sistematizar es proceso que es bueno. gracias CHICOS y buena por esa.
MundoLocowindow 7 ultimate y la version del ooo 4.0.0
Responder