Condividi tramite

Convertire quantità numeriche 0 e 1

Anonimo
2022-06-15T10:40:33+00:00

Salve, ho un file excel dove sono presenti 1000 codici e per ogni codice sono presenti diverse quantità, dovrei modificare il file in modo che una casella dove è presente un certo valori riporti sempre 1 e dove la casella è vuota venga riportato lo 0.

allego screen per spiegarmi meglio.

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
2022-06-15T15:32:50+00:00

Ciao tango48,

Salve, ho un file excel dove sono presenti 1000 codici e per ogni codice sono presenti diverse quantità, dovrei modificare il file in modo che una casella dove è presente un certo valori riporti sempre 1 e dove la casella è vuota venga riportato lo 0.

allego screen per spiegarmi meglio.Immagine

Oltre all'ottimo suggerimento di Gianfranco, se vuoi modificare i dati esistenti in situ o vuoi creare una nuova tabella statica senza formule, puoi fare come segue:

  • Alt+F11 per aprire l'editor di VBA
  • Alt+IM per inserire un nuovo modulo di codice
  • Nel nuovo modulo vuoto, incolla il seguente codice [1]:

'========>>

Option Explicit

'-------->>

Public Sub Tester()

Dim WB As Workbook 

Dim srcSH As Worksheet, destSH As Worksheet 

Dim srcRng As Range, destRng As Range 

Dim arrIn As Variant 

Dim i As Long, j As Long 

Dim LRow As Long 

Const sFoglio\_Sorgente As String = **"Foglio1"            '<<=== Modifica** 

Const sFoglio\_Destinazione As String = **"Foglio2"      '<<=== Modifica** 

Const sColonne\_Tabella As String = **"A:F"                    '<<=== Modifica** 

Const iPrima\_Riga\_Tabella As Long = **5                         '<<=== Modifica** 

Const sDestinazione As String = **"A2"                          '<<=== Modifica** 

Set WB = ThisWorkbook 

With WB 

    Set srcSH = .Sheets(sFoglio\_Sorgente) 

    Set destSH = .Sheets(sFoglio\_Destinazione) 

End With 

With srcSH 

    LRow = LastRow(srcSH, .Columns("A:A")) 

    Set srcRng = .Range(sColonne\_Tabella).Resize(LRow - iPrima\_Riga\_Tabella + 1).Offset(iPrima\_Riga\_Tabella - 1) 

End With 

Set destRng = destSH.Range(sDestinazione) 

arrIn = srcRng.Value 

For i = 1 To UBound(arrIn) 

    For j = 3 To UBound(arrIn, 2) 

        If IsNumeric(arrIn(i, j)) Then 

            arrIn(i, j) = IIf(arrIn(i, j) > 0, 1, 0) 

        End If 

    Next j 

Next i 

With destRng 

    .CurrentRegion.ClearContents 

    .Resize(UBound(arrIn), UBound(arrIn, 2)).Value = arrIn 

End With 

End Sub

'--------->>

Public Function LastRow(SH As Worksheet, _

Optional Rng As Range, \_ 

Optional minRow As Long = 1) 

If Rng Is Nothing Then 

    Set Rng = SH.Cells 

End If 

On Error Resume Next 

LastRow = Rng.Find(What:="\*", \_ 

    After:=Rng.Cells(1), \_ 

    Lookat:=xlPart, \_ 

    LookIn:=xlFormulas, \_ 

    SearchOrder:=xlByRows, \_ 

    SearchDirection:=xlPrevious, \_ 

    MatchCase:=False).Row 

On Error GoTo 0 

If LastRow < minRow Then 

    LastRow = minRow 

End If 

End Function

'<<========

  • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
  • Salva il file con l'estensione xlsm
  • Alt+F8 per aprire la finestra di gestione delle macro
  • Seleziona Tester
  • Esegui

**[1]**A causa di un problema con l'attuale editor del forum, che inserisce righe vuote indesiderate nel codice copiato dal forum, suggerirei di copiare il mio codice direttamente dal mio file di prova Tango20220615.xlsm

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2022-06-15T11:14:39+00:00

    ciao

    non sei chiaro

    lo vuoi su una tabella a parte

    o sulla stessa?

    se a parte

    =SE(VAL.NUMERO(A3);1;0)

    e la tiri a destra e in basso

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento