[RESUELTO] split ???

Discute sobre la aplicación de hojas de cálculo

[RESUELTO] split ???

Notapor mundoloco » Lun Dic 16, 2013 10:47 pm

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   Expandir vistaContraer vista
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
mundoloco
 
Mensajes: 30
Registrado: Jue Sep 05, 2013 2:43 pm

Re: split ???

Notapor mauricio » Lun Dic 16, 2013 11:49 pm

Usa
Código: Seleccionar todo   Expandir vistaContraer vista
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
Avatar de Usuario
mauricio
 
Mensajes: 5991
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: split ???

Notapor FJCC-ES » Mar Dic 17, 2013 12:45 am

Otro método:
Código: Seleccionar todo   Expandir vistaContraer vista
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
FJCC-ES
 
Mensajes: 700
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: split ???

Notapor mundoloco » Mié Dic 18, 2013 2:35 am

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
mundoloco
 
Mensajes: 30
Registrado: Jue Sep 05, 2013 2:43 pm


Volver a Calc

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados