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
[Risolto] trova e sostituisci valori
[Risolto] trova e sostituisci valori
- Allegati
-
- sostituisci.ods
- (12.44 KiB) Scaricato 90 volte
Ultima modifica di charlie il lunedì 8 settembre 2014, 12:27, modificato 2 volte in totale.
Motivazione: Inserito segno di spunta verde
Motivazione: Inserito segno di spunta verde
openOffice 4.1.0 mac os x 10.9.4
Re: trova e sostituisci valori
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 109 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: trova e sostituisci valori
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
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
Re: trova e sostituisci valori
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 rangeGaetanopr ha scritto:Bisogna definire l'area del secondo foglio "A2:B11" con il nome "TABELLA"
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
Openoffice 4.1.13 su windows 10
Re: trova e sostituisci valori
perfetto grazie!
Editato: Eliminata citazione, perchè inutile (moderatore charlie) |
openOffice 4.1.0 mac os x 10.9.4