[Risolto] Eliminare determinati valori all'interno di un foglio 2a parte

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Nando69
Messaggi: 486
Iscritto il: lunedì 21 settembre 2020, 11:03

[Risolto] Eliminare determinati valori all'interno di un foglio 2a parte

Messaggio da Nando69 »

Salve a tutti. Devo riprendere un tema postato il 30 luglio scorso perchè mi servirebbe una piccola variante al riguardo. Con riferimento al file allegato,dal tabulato presente nel foglio e semplificato per l'occasione,vorrei eliminare tramite una macro il range A94-F223 ma lasciando operative (quindi presenti) le righe evidenziate col colore,vale a dire gli intervalli da A110 ad A114,da A139 ad A143,da A168 ad A172 e da A197 ad A201. Faccio notare che nelle celle A111,A114,A140,A143,A169,A172,A198 e A201 (evidenziate col verde) sono presenti delle formule. Una buona serata
Allegati
6 settembre.ods
(8.33 KiB) Scaricato 60 volte
Ultima modifica di Nando69 il giovedì 7 settembre 2023, 16:23, modificato 1 volta in totale.
Libre Office 7.3.0.3
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8954
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Eliminare determinati valori all'interno di un foglio 2a parte

Messaggio da charlie »

charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Eliminare determinati valori all'interno di un foglio 2a parte

Messaggio da Lanfranchi G.Luigi »

Ciao.
Se il colore determina le celle da non cancellare...

Codice: Seleziona tutto

Sub cancella
Doc=ThisComponent
oSh=Doc.Sheets(0)

oCell1=oSh.getcellRangeByName("A94:F223")
Colore = oSh.getCellRangeByName("A110").CellBackColor ' <<< colore da confrontare
Colore1 = oSh.getCellRangeByName("A111").CellBackColor ' <<< colore da confrontare

for nr=Ocell1.RangeAddress.StartRow To Ocell1.RangeAddress.EndRow
	for nc=Ocell1.RangeAddress.StartColumn To Ocell1.RangeAddress.Endcolumn	
    
    	 if oSh.getCellByPosition (nc,nr).CellBackColor <> Colore and _
    	     	 oSh.getCellByPosition (nc,nr).CellBackColor <> Colore1 then oSh.getCellByPosition (nc,nr).string=""
		
    
	Next
Next
end sub
Modificato 1 volta.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Nando69
Messaggi: 486
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: Eliminare determinati valori all'interno di un foglio 2a parte

Messaggio da Nando69 »

Ciao Luigi,funziona perfettamente,grazie. Mi potresti gentilmente modificare il codice senza che nel foglio sia presente il colore per le celle da mantenere ? Eliminare cioè sempre il range A94-F223 e lasciando operative gli stessi intervalli di prima : da A110 ad A114,da A139 ad A143,da A168 ad A172 e da A197 ad A201. Ciao
Allegati
7 settembre.ods
(8.35 KiB) Scaricato 55 volte
Libre Office 7.3.0.3
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Eliminare determinati valori all'interno di un foglio 2a parte

Messaggio da Lanfranchi G.Luigi »

La soluzione sta proprio nel colore delle celle.....ti basta colorare le celle che non vuoi eliminare in modo diverso da tutte le altre.
La macro memorizza i colori delle celle da non eliminare dal colore delle celle A110 e A111.
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Nando69
Messaggi: 486
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: Eliminare determinati valori all'interno di un foglio 2a parte

Messaggio da Nando69 »

La questione non era quella di colorare con un altra...tinta le celle che non voglio eliminare al fine di ottenere il risultato voluto. Mi serviva una variante in cui non vi fosse PROPRIO ALCUN COLORE DI NESSUN TIPO anche per quel che riguarda le celle che non voglio cancellare. Comunque grazie mille per il tempo che hai messo gentilmente a mia disposizione
Libre Office 7.3.0.3
Avatar utente
Lanfranchi G.Luigi
Messaggi: 116
Iscritto il: venerdì 12 aprile 2019, 16:54

Re: Eliminare determinati valori all'interno di un foglio 2a parte

Messaggio da Lanfranchi G.Luigi »

Il codice è un po "tirato per i capelli" (non mi piace programmare con numeri fissi) ma ci stà.

Codice: Seleziona tutto

Sub cancella
Doc=ThisComponent
oSh=Doc.Sheets(0)

Target = 17
Conta =0
Conta1=0

for Nr=93 to 223

  Conta = Conta +1

  if Conta1=5 then
   Conta1=0
   Target =25
  end if

  For Nc=0 to 5

    if Conta= Target and Conta1<5 then

      Target = 1
      Conta=0
      Conta1=Conta1+1
     else

      oSh.getCellByPosition (nc,nr).string=""
 
   end if

  next Nc

next Nr

end sub
LibreOffice ver. 7.5.3.2 - Windows 10 Pro 64 bit
Nando69
Messaggi: 486
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: Eliminare determinati valori all'interno di un foglio 2a parte

Messaggio da Nando69 »

Grazie,buona giornata. Metto [Risolto]
Libre Office 7.3.0.3
Rispondi