Condividi tramite

Come copiare solo i valori validi

Anonimo
2024-07-13T12:14:44+00:00

Ciao a tutti,

ho una difficoltà e non riesco a venirne a capo.

In un foglio di lavoro ha messo la seguente formula: =SE(foglio1!B6="";"";SE(foglio1!B6="a";"A";SE(foglio1!B6=0,5;"P")))

Questa stessa formula è inserita anche nelle celle vicine (ovviamente B6 diventa C6, C7 ecc)

Usando questa formula ottengo il seguente risultato ad esempio:

A A A A
P P P A A
A A A A
P P P P

Lo schema che vedete sopra devo incollarlo in un altro foglio di lavoro che alla fine di ogni riga ha una formula "conta.valori"

Il mio problema è che facendo incolla valori nel nuovo foglio la formula conta valori non conta solo le celle in cui vi è una lettera ma conta anche le celle vuote.

Ad esempio il totale di riga 1 dovrebbe essere 4 ed invece mi dà 8

Il totale di riga 2 dovrebbe essere 5 ed invece mi da 8

e così via

Premetto che il foglio sul quale incollo non posso modificarlo perchè è bloccato con password.

Cosa posso fare?

grazie in anticipo

Microsoft 365 e Office | Excel | Per la casa | MacOS

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2024-07-15T07:10:39+00:00

Se, come mi sembra di comprendere, le celle dove incolli i valori non sono protette prova ad inserire nel modulo VBA del foglio dove incolli i valori questo codice.

Seleziona la scheda del foglio, poi fai click destro con il mouse e scegli la voce "Visualizza codice ...":

Immagine

Si apre l'editor del VBA in corrispondenza del modulo del foglio:

Immagine

Incolli questo codice nella sezione a destra:

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

   Dim r As Range 

   On Error Resume Next 

   With Application 

      .Calculation = xlCalculationManual 

      .EnableEvents = False 

      .ScreenUpdating = False 

   End With 

   For Each r In Target 

      If r.Value = "" Then r.ClearContents 

   Next r 

   With Application 

      .ScreenUpdating = True

      .EnableEvents = True

      .Calculation = xlCalculationAutomatic 

   End With 

End Sub 

Nota che ho inserito l'istruzione "On Error Resume Next". Poiché non ho idea di come sia strutturato il foglio questa istruzione fa in modo che se dovesse esservi una qualche azione che dovesse comportare un errore VBA la procedura lo ignorerebbe e andrebbe avanti senza lanciare messaggi di errori VBA.

In pratica questa procedura cancella il contenuto della cella il cui valore risulti essere "" (stringa nulla) ma che è un valore comunque riportato nella cella tramite copia/incolla di una cella che contiene una formula che restituisce, appunto, quel valore (e che viene letto come valore presente dalla formula "CONTA.VALORI).

Edit: ho corretto a True le istruzioni finali delle ScreenUpdatin e EnableEvents che mi erano rimaste a False :-)

La risposta è stata utile?

0 commenti Nessun commento

15 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2024-07-13T15:06:00+00:00

    Il foglio da cui copio è mio, il foglio in cui incollo non è mio infatti è protetto

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2024-07-13T13:59:10+00:00

    ciao

    se alleghi il file magari i vbaisti ti aiutano

    una curiosità

    ma il foglio dove incolli i dati è tuo?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2024-07-13T13:41:22+00:00

    Ok grazie lo stesso, non so usare il vba quindi non saprei da dove iniziare

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2024-07-13T13:28:50+00:00

    ciao

    non saprei cosa dirti se non

    fatti dare la pass o fatti cambia formula dal gestore del file

    in alternativa suppongo che con il vba il problema scomparirebbe

    La risposta è stata utile?

    0 commenti Nessun commento