Pannello di Controllo Moderatore ]

Come vengono contate le righe?

Creare una macro - Scrivere uno script - Usare le API

Come vengono contate le righe?

Messaggioda ilkappa » giovedì 14 marzo 2019, 11:33

Ciao a tutti.
Un informazione in merito ad una procedura macro.
in un foglio di calcolo ho una serie elenco sui quali, in un altro foglio, seguo delle ricerche ed estrapolo dei dati salvati riga per riga, che utilizzo poi in un terzo foglio.
per non continuare a copiare e quindi duplicare dati, nel secondo foglio, ho fatto in modo che sulla riga dove inserisco i dati per effettuare la ricerca, mi venga restituito, invece dei dati, il numero della riga indice del primo foglio.

La mia idea era quindi, nel terzo foglio, dove preparo i dati per la stampa, recuperare i valori dal primo foglio, basandomi sul numero indice che avevo precedentemente salvato nel secondo foglio.
Tutto questo funziona, tranne il fatto che se nel secondo foglio lui mi salva CORRETTAMENTE il numero di riga ex. 10, nel terzo foglio mi stampa la riga 11.

Non riesco ad allegare il file originale perché contiene dati sensibili ed in realtà lui non si basa solo su 1 foglio iniziale su cui fare le ricerche ma su 10 fogli differenti, infatti nel secondo foglio, dove salvo il riferimento all'indice, salvo anche il nome del foglio relativo con il formato NomeFoglio.Numeroriga

Questa procedura viene eseguita nel secondo foglio con la variabile SH relativa al secondo foglio.
Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub _ReadWriteArt
   Match="B2:B9999" ' campo di ricerca in colonna per la funzione match
   DSN=ThisComponent.Sheets.getByName(SheetName)'assegno alla variabile DSN, l'oggetto foglio su cui recuperare i dati
    MRange = DSN.getCellRangeByName(Match) ' per la funzione match genere il suo campo di ricerca nel foglio desiderato (solo 1 colonna)
    Row=SVC.callFunction("MATCH", Array(Item, MRange,0))'assegno alla variabile Row, il numero della riga trovata
    'msgbox Row     ''''  trovata la riga corretta
    SH.getCellByposition(CL+8,RG).String=SheetName+"."+(Row+1) 'assgno alla colonna 8 l indirizzo originale dell'articolo nel formato NomeFoglio.Numeroriga
End Sub




Questa è la fusione presente nel 3° foglio che si occupa di stampare i dati, letti nel secondo foglio salvati dalla procedura sopra, relativi alla riga del primo foglio
per funzionare funziona, ma la riga
estratti=DSN.getCellByposition(3,Row(1)).String 'estraggo il peso. 'estraggo una specifica cella dalla riga interessata
mi estrae i dati della riga successiva a quella indicata: chiesta la 10 (msgbox (Row(1)) ---> stampa 10 ). ottengo la 11

Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub _EstraiDati(riga)
if IndRif.String <> 0 then            'leggo dal secondo foglio la cella contenente l'indirizzo di riferimento nel formato NomeFoglio.Numeroriga
Row=split(IndRif.string,".")         'spezzo l'indirizzo per avere separati il nome del foglio ed il numero della riga
DSN=ThisComponent.Sheets.getByName(Row(0)      'assegno alla variabile DSN il foglio dal quale estrarre i dati

estratti=DSN.getCellByposition(3,Row(1)).String 'estraggo il peso.    'estraggo una specifica cella dalla riga interessata

end if
End Sub




Qualcuno di voi ha qualche suggerimento?
Grazie
OpenOffice 3.1 su Ubuntu 16.04
ilkappa
 
Messaggi: 31
Iscritto il: mercoledì 1 febbraio 2017, 13:52

Re: Come vengono contate le righe?

Messaggioda Eramad » giovedì 14 marzo 2019, 12:14

I riferimenti nelle macro a celle e colonne partono a contare da 0

Quindi la riga 1 e la colonna A sono 0

Comunque non capisco un paio di cose:

Codice: Seleziona tutto   Espandi visualeStringi visuale
DSN=ThisComponent.Sheets.getByName(Row(0)

mi sfugge il significato

e non capisco dove gli dai i dati...quindi non capisco dove c'è l'aumento di 1
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=5661
Avatar utente
Eramad
Volontario
Volontario
 
Messaggi: 247
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Come vengono contate le righe?

Messaggioda ilkappa » giovedì 14 marzo 2019, 19:37

Grazie per l'attenzione e per la risposta:

Codice: Seleziona tutto   Espandi visualeStringi visuale
DSN=ThisComponent.Sheets.getByName(Row(0)

Questa funzione assegna alla variabile DSN il foglio da utilizzare: semplicemente una scorciatoia.

Ho risolto (a quanto pare) andando a tramutare la stringa Row(1), cioè il numero di riferimento alla riga del primo foglio,
in un integer e quindi ho sottratto a quel valore 1, al momento della stampa, cosi mi stampa esattamente la riga interessata.

Per ora... grazie.
OpenOffice 3.1 su Ubuntu 16.04
ilkappa
 
Messaggi: 31
Iscritto il: mercoledì 1 febbraio 2017, 13:52

Re: Come vengono contate le righe?

Messaggioda Eramad » giovedì 14 marzo 2019, 22:22

Ma scusa....non manca una parentesi a quella riga?
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=5661
Avatar utente
Eramad
Volontario
Volontario
 
Messaggi: 247
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Come vengono contate le righe?

Messaggioda patel » venerdì 15 marzo 2019, 7:57

e poi la funzione row non esiste, l'hai creata tu ?
-------------------
OpenOffice 4.1 e Libre Office 6.o.7.3 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3208
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Come vengono contate le righe?

Messaggioda ilkappa » sabato 16 marzo 2019, 15:05

Eramad ha scritto:Ma scusa....non manca una parentesi a quella riga?

Si, manca una riga, errore di copia

e poi la funzione row non esiste, l'hai creata tu ?

row non e una funzione ma un .... array.
Forse dovevo scriverlo minuscolo.
OpenOffice 3.1 su Ubuntu 16.04
ilkappa
 
Messaggi: 31
Iscritto il: mercoledì 1 febbraio 2017, 13:52

Re: Come vengono contate le righe?

Messaggioda patel » sabato 16 marzo 2019, 17:44

pe farti capire dagli altri dovresti usare nomi più indicativi per le variabili, as es. arrRows invece di row
Ultima modifica di patel il sabato 16 marzo 2019, 18:43, modificato 1 volta in totale.
-------------------
OpenOffice 4.1 e Libre Office 6.o.7.3 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3208
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Come vengono contate le righe?

Messaggioda Eramad » sabato 16 marzo 2019, 18:13

O ancora meglio postare il file con la macro scritta per intero così si vedono tutte le variabili e tutti i passaggi.

Comunque, se hai risolto, puoi mettere [Risolto] nel titolo
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=5661
Avatar utente
Eramad
Volontario
Volontario
 
Messaggi: 247
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia


Torna a Macro e UNO API

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti