[Risolto] trova e sostituisci valori

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
b1313
Messaggi: 12
Iscritto il: mercoledì 3 settembre 2014, 10:19

[Risolto] trova e sostituisci valori

Messaggio da b1313 »

Ciao!
ho una colonna che contiene valori separati da virgola.
vorrei che nella colonna a fianco mi uscissero i valori sostituiti (come esempio colonna RISULTATO) seguendo una legenda creata nel Foglio2.
qualcuno mi può aiutare con una macro?
allego un esempio del file.
grazie
Allegati
sostituisci.ods
(12.44 KiB) Scaricato 91 volte
Ultima modifica di charlie il lunedì 8 settembre 2014, 12:27, modificato 2 volte in totale.
Motivazione: Inserito segno di spunta verde
openOffice 4.1.0 mac os x 10.9.4
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: trova e sostituisci valori

Messaggio da Gaetanopr »

Bisogna definire l'area del secondo foglio "A2:B11" con il nome "TABELLA"

Codice: Seleziona tutto

Sub Main
Dim Riscontri()
Dim svc As Object
doc=thiscomponent
Sh1 =  Doc.Sheets(0)
Sh2 =  Doc.Sheets(1)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
LastRow = c.RangeAddress.EndRow             
svc = createUnoService("com.sun.star.sheet.FunctionAccess")
Tabella = Sh2.getCellRangeByName("TABELLA")  

  For i = 1 to LastRow   
    x = 0 
    oCell1 = Sh1.getCellByPosition(0, i)
    Array1 = Split(oCell1.String,",")
    For n = Lbound(Array1) To Ubound(Array1)
        vlook = svc.callFunction("VLOOKUP",Array(Array1(n), Tabella, 2, False))
        If IsEmpty(vlook) = False Then
           Redim Preserve Riscontri(0 to x)
           Riscontri(x) = vlook 
           x = x + 1
        End If     
    Next n
    If x > 0 Then 
       Sh1.getCellByPosition(2, i).String = Join( Riscontri(), "," )
    Else 
       Sh1.getCellByPosition(2, i).String = ""
    End if   
  Next i          
   

End Sub
Allegati
sostituisci.ods
(10.63 KiB) Scaricato 110 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
b1313
Messaggi: 12
Iscritto il: mercoledì 3 settembre 2014, 10:19

Re: trova e sostituisci valori

Messaggio da b1313 »

Ciao!
grazie per l'aiuto.
Ho provato la macro aggiungendo dei valori nel foglio TABELLA, non so se sbaglio io, ma salta i valori dopo il 10, come vedi nel file allegato.

grazie
Gaetanopr ha scritto:Bisogna definire l'area del secondo foglio "A2:B11" con il nome "TABELLA"

Codice: Seleziona tutto

Sub Main
Dim Riscontri()
Dim svc As Object
doc=thiscomponent
Sh1 =  Doc.Sheets(0)
Sh2 =  Doc.Sheets(1)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
LastRow = c.RangeAddress.EndRow             
svc = createUnoService("com.sun.star.sheet.FunctionAccess")
Tabella = Sh2.getCellRangeByName("TABELLA")  

  For i = 1 to LastRow   
    x = 0 
    oCell1 = Sh1.getCellByPosition(0, i)
    Array1 = Split(oCell1.String,",")
    For n = Lbound(Array1) To Ubound(Array1)
        vlook = svc.callFunction("VLOOKUP",Array(Array1(n), Tabella, 2, False))
        If IsEmpty(vlook) = False Then
           Redim Preserve Riscontri(0 to x)
           Riscontri(x) = vlook 
           x = x + 1
        End If     
    Next n
    If x > 0 Then 
       Sh1.getCellByPosition(2, i).String = Join( Riscontri(), "," )
    Else 
       Sh1.getCellByPosition(2, i).String = ""
    End if   
  Next i          
   

End Sub
Allegati
sostituisci.ods
(15.4 KiB) Scaricato 83 volte
openOffice 4.1.0 mac os x 10.9.4
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: trova e sostituisci valori

Messaggio da Gaetanopr »

Gaetanopr ha scritto:Bisogna definire l'area del secondo foglio "A2:B11" con il nome "TABELLA"
L'area che avevo definito arriva alla cella B11 se allunghi la tabella devi pure modificare l'area di questa andando su Inserisci - Nomi - Definisci - selezioni TABELLA e modifichi il range

Altrimenti cambia la macro in questo modo, così non c'è bisogno di definire il nome "TABELLA"

Codice: Seleziona tutto

Sub Main
Dim Riscontri()
Dim svc As Object
doc=thiscomponent
Sh1 =  Doc.Sheets.getByName("Foglio1")
Sh2 =  Doc.Sheets.getByName("TABELLA")
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
LastRow = c.RangeAddress.EndRow

a = Sh2.createCursor
a.gotoEndOfUsedArea(false)
LastRow2 = a.RangeAddress.EndRow
               
svc = createUnoService("com.sun.star.sheet.FunctionAccess")
Tabella = Sh2.getCellRangeByName("A2:B" & LastRow2+1)  

  For i = 1 to LastRow   
    x = 0 
    oCell1 = Sh1.getCellByPosition(0, i)
    Array1 = Split(oCell1.String,",")
    For n = Lbound(Array1) To Ubound(Array1)
        vlook = svc.callFunction("VLOOKUP",Array(Array1(n), Tabella, 2, False))
        If IsEmpty(vlook) = False Then
           Redim Preserve Riscontri(0 to x)
           Riscontri(x) = vlook 
           x = x + 1
        End If     
    Next n
    If x > 0 Then 
       Sh1.getCellByPosition(1, i).String = Join( Riscontri(), "," )
    Else 
       Sh1.getCellByPosition(1, i).String = ""
    End if   
  Next i          
   

End Sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
b1313
Messaggi: 12
Iscritto il: mercoledì 3 settembre 2014, 10:19

Re: trova e sostituisci valori

Messaggio da b1313 »

perfetto grazie!
 Editato: Eliminata citazione, perchè inutile (moderatore charlie) 
openOffice 4.1.0 mac os x 10.9.4
Rispondi