Buonasera a tutti,
avrei bisogno di aiuto, ho un file con un intervallo di dati formato da nomi e date.
In una cella avrei bisogno di una legenda con la descrizione delle sole abbreviazioni contenute in un intervallo.
Mi spiego meglio, in un foglio ci sono tutte le abbreviazioni che sono molte, per miglioreare la legibilità voglio che si vedano solo quelle utilizzate nella selezione.
ho messo un file in allegato
grazie in anticipo per l'aiuto.
Popolare una legenda in funzione di dei valori
Popolare una legenda in funzione di dei valori
- Allegati
-
- FORUM2(1).ods
- (50 KiB) Scaricato 20 volte
Suite libre office Versione: 7.1.0.3 windows 10
Re: Popolare una legenda in funzione di dei valori
Ciao. Credo che per la tua soluzione ci voglia una macro.
Con le formule si potrebbe risolvere installando l'estensione lox365, che trovi qui
https://extensions.libreoffice.org/en/e ... show/27434
e che ti mette a disposizione la funzione TOCOL (oltre ad altre)
La formula è questae che come output di darebbe questo
Con le formule si potrebbe risolvere installando l'estensione lox365, che trovi qui
https://extensions.libreoffice.org/en/e ... show/27434
e che ti mette a disposizione la funzione TOCOL (oltre ad altre)
La formula è questa
Codice: Seleziona tutto
=TESTO.UNISCI(", ";1;UNICI(TOCOL(SCARTO(F2;1;CONFRONTA(E1;G2:SH2;0);7;4))))
- Allegati
-
- abbreviazioni.png (56.58 KiB) Visto 285 volte
...se sei soddisfatto delle risposte ricevute metti il [Risolto] viewtopic.php?f=9&t=5661
Libreoffice 25.8 LinuxMint 21/22
Libreoffice 25.8 LinuxMint 21/22
Re: Popolare una legenda in funzione di dei valori
Grazie gioh66 ,la formula mi funziona in parte, il comando "UNICI" non mi funziona.
Comunque ho fatto una macro, però non riesco ad eliminare i valori doppi dall'Array
Qualcuno mi può aiutare??
Comunque ho fatto una macro, però non riesco ad eliminare i valori doppi dall'Array
Qualcuno mi può aiutare??
- Allegati
-
- FORUM2.ods
- (53.96 KiB) Scaricato 57 volte
Suite libre office Versione: 7.1.0.3 windows 10
Re: Popolare una legenda in funzione di dei valori
La funzione UNICI è implementata in Libreoffice dalla 24.8 (https://wiki.documentfoundation.org/ReleaseNotes/24.8).
Prova ad aggiornare all'ultima versione. (https://it.libreoffice.org/download/download/)
LibreOffice 25.2.5 (Win 11)
-----------------------------------------
Se risolto inserisci [Risolto] e la spunta verde
: viewtopic.php?f=9&t=5661
-----------------------------------------
Se risolto inserisci [Risolto] e la spunta verde

Re: Popolare una legenda in funzione di dei valori
Si verissimo Attilafdd non avevo libreoffice aggiornato.
comunque sono riusctito a fare una macro che preferisco per il mio utilizzo:
in allegato il file conla macro.
un unico problema nella macro volevo dimensionare l'ARRAY che utilizzo in funzione del Range che viene memorizzato, ma di da errore
Somma=Righe+Colonne+5
redim MatriceDati(Somma)
così mi da errore e allora ho dimensionato così:
redim MatriceDati(100)
Garzie a tutti
comunque sono riusctito a fare una macro che preferisco per il mio utilizzo:
Codice: Seleziona tutto
sub CicloLegenda
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
Dim Doc As Object
Dim MatriceDati() as string
Dim RimuoveNulli() as string
Dim Ordina() as string
Dim Righe,Colonne As Variant
Dim Contatore,ContaRighe,ContaColonne As Variant
Dim SearchValue,Column,Mode As Variant
Doc = ThisComponent
Foglio = Doc.Sheets.getByName("Foglio1")
FoglioDati= Doc.Sheets.getByName("Legenda")
Cella = Foglio.GetCellByPosition(5,3).String
Intervallo = Foglio.getCellRangeByName("G3:I9")
Doc.CurrentController.Select(Intervallo)
Righe=Intervallo.rangeaddress.endrow - Intervallo.rangeaddress.startrow
Colonne=Intervallo.rangeaddress.endcolumn - Intervallo.rangeaddress.startcolumn
'Somma=Righe+Colonne+5
'redim MatriceDati(Somma)
redim MatriceDati(100)
Contatore=0
For ContaRighe=Intervallo.rangeaddress.startrow to Intervallo.rangeaddress.endrow
For ContaColonne=Intervallo.rangeaddress.startcolumn to Intervallo.rangeaddress.endcolumn
Cella = Foglio.GetCellByPosition(ContaColonne,ContaRighe).String
MatriceDati(Contatore) = Cella
Contatore=Contatore+1
Next ContaColonne
Next ContaRighe
'TrimArray
'Rimuove da una matrice unidimensionale tutti gli elementi Null, Empty e di lunghezza zero.
'Dim RimuoveNulli As Variant
RimuoveNulli = SF_Array.TrimArray(MatriceDati())
'Unique
'Costruisce un insieme di valori univoci derivati dalla matrice di partenza.
'Dim Ordina As Variant
Ordina = SF_Array.Unique(RimuoveNulli(), CaseSensitive := True)
'Cercare i dati da scrivere
svc = createUnoService( "com.sun.star.sheet.FunctionAccess" )
CellRange = FoglioDati.getCellRangeByName("A1:B10000")
Column = 2
Mode = 0
for ii= LBound(Ordina()) To UBound(Ordina())
SearchValue = Ordina(ii)
arg = Array(SearchValue, CellRange, Column, Mode)
Value = svc.callFunction("VLOOKUP",arg)
ssss=ssss & SearchValue & "=" & Value & ";"
'
next
msgbox ssss
Foglio.getCellByPosition(5,12).setstring ssss
end sub
un unico problema nella macro volevo dimensionare l'ARRAY che utilizzo in funzione del Range che viene memorizzato, ma di da errore
Somma=Righe+Colonne+5
redim MatriceDati(Somma)
così mi da errore e allora ho dimensionato così:
redim MatriceDati(100)
Garzie a tutti
- Allegati
-
- FORUM-Def.ods
- (55.89 KiB) Scaricato 10 volte
Suite libre office Versione: 7.1.0.3 windows 10