Excel VBA: se la cella contiene un valore, restituire un output specificato

  • Condividi Questo
Hugh West

In questo articolo vi mostrerò come analizzare la situazione in Excel. VBA Se una cella contiene un valore, imparerete ad analizzare la situazione sia per qualsiasi valore che per un valore particolare.

Analisi VBA di Excel: Se la cella contiene un valore allora (Vista rapida)

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo è apparsa all'esame di fisica." End If End Sub 

Scarica il quaderno di esercizi

Scaricate questo quaderno di esercizi per esercitarvi durante la lettura di questo articolo.

VBA Se la cella contiene un valore allora.xlsm

Analisi VBA di Excel: se la cella contiene un valore, restituire l'output (analisi passo dopo passo)

Qui abbiamo un set di dati con i voti di alcuni studenti in Fisica, Chimica e Matematica in una scuola chiamata Sunflower Kindergarten.

Le celle vuote significano che lo studente non si è presentato, cioè era assente in quel particolare esame. Analizziamo ora la situazione, se una cella contiene o meno un valore, con questo set di dati.

⧪ Passo 1: dichiarazione della cella

Per prima cosa, dobbiamo dichiarare la cella di cui vogliamo analizzare il valore. Analizziamo se Jennifer Marlo si è presentata o meno all'esame di Fisica.

Pertanto, è necessario verificare se la cella C12 contiene o meno un valore.

Per farlo, occorre innanzitutto dichiarare la cella C12 .

La riga di codice per ottenere questo risultato sarà:

 Set Cell = Range("C12").Cells(1, 1) 

⧪ Passo 2: verificare se la cella contiene un valore (compreso un valore particolare)

Successivamente, dobbiamo verificare se la cella contiene un valore o meno. Eseguiremo questa operazione utilizzando un metodo Se la condizione La riga di codice sarà:

 Se Cell.Value "" Allora 

Questo codice verrà eseguito se la cella contiene un valore qualsiasi. Per verificare un valore (ad esempio, se contiene 100 o meno), utilizzare quel valore specifico con un'opzione Pari a simbolo.

 Se Cell.Value "" Allora 

⧪ Fase 3: assegnazione del compito

Quindi si deve impostare un'attività che verrà eseguita se la cella contiene un valore (o un valore specifico).

Qui si vuole visualizzare il messaggio "Jennifer Marlo si è presentata all'esame di Fisica". Quindi la riga di codice sarà:

 MsgBox "Jennifer Marlo si è presentata all'esame di Fisica". 

⧪ Fase 4: conclusione del blocco If

Infine, è necessario dichiarare la fine del blocco If.

 Fine Se 

Quindi la completa VBA codice sarà:

⧭ Codice VBA:

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo è apparsa all'esame di fisica." End If End Sub 

⧭ Uscita:

Eseguite questo codice facendo clic sul pulsante Eseguire il modulo secondario/utente sulla barra degli strumenti.

Verrà visualizzato il messaggio "Jennifer Marlo si è presentata all'esame di Fisica". come la cella C12 contiene un valore, di 50 .

Esempi che coinvolgono Se la cella contiene un valore allora un output specificato con Excel VBA

Abbiamo imparato ad analizzare se una cella contiene o meno un valore in VBA Esaminiamo ora alcuni esempi per chiarire la comprensione.

1. Sviluppare una macro per filtrare un valore Se la cella corrispondente contiene un valore qualsiasi in Excel VBA

Sviluppiamo un Macro per filtrare gli studenti che hanno partecipato a ciascun esame.

Dobbiamo cioè controllare le celle contenenti i voti di ciascuna materia e verificare se contengono un valore o meno.

In caso affermativo, dobbiamo individuare il nome dello studente corrispondente.

L'opera completa VBA Il codice per ottenere questo risultato sarà:

⧭ Codice VBA:

 Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Inserire il riferimento della prima cella dei dati filtrati: ") For i = 2 To Selection.Columns.Count Range(Starting_Cell).Cells(1, i - 1) = Selection.Cells(1, i) Next i Count = 2 For i = 2 To Selection.Columns.Count For j = 2 To Selection.Rows.Count Set Cell = Selection.Cells(j, i) If Cell.Value "" ThenRange(Starting_Cell).Cells(Count, i - 1) = Selection.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 2 Next i End Sub 

⧭ Uscita:

Selezionare il set di dati (compreso il Intestazioni ) ed eseguire questo Macro .

Per prima cosa, vi verrà chiesto di inserire il riferimento della prima cella in cui volete che vengano filtrati i dati. Io ho inserito G3 .

Quindi fare clic su OK Si otterranno i nomi degli studenti che hanno partecipato a ciascuno degli esami (compresi i nomi degli studenti che hanno partecipato all'esame). Intestazioni ) in un nuovo set di dati a partire dalla cella G3 .

2. Creare una funzione definita dall'utente per ordinare un valore Se la cella corrispondente contiene un valore specifico in Excel VBA

Ora creeremo una funzione definita dall'utente che restituirà i nomi degli studenti che hanno ottenuto un voto specifico in ciascuna delle materie.

La procedura è quasi identica a quella descritta sopra: dobbiamo controllare le celle contenenti i voti di ciascuna materia e verificare se sono uguali o meno a un valore specifico.

Se lo sono, restituiremo il nome dello studente corrispondente.

Il VBA codice sarà:

⧭ Codice VBA:

 Function Cells_with_Values(Rng As Range, Data As Variant) Dim Output() As Variant ReDim Output(Rng.Rows.Count, Rng.Columns.Count - 1) For i = 0 To Rng.Columns.Count - 2 Output(0, i) = Rng.Cells(1, i + 2) Next i Count = 1 For i = 2 To Rng.Columns.Count For j = 2 To Rng.Rows.Count Set Cell = Rng.Cells(j, i) If Cell.Value = Data Then Output(Count, i - 2) =Rng.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 1 Next i For i = LBound(Output, 1) To UBound(Output, 1) For j = LBound(Output, 2) To UBound(Output, 2) If Output(i, j) = 0 Then Output(i, j) = "" End If Next j Next i Cells_with_Values = Output End Function 

⧭ Uscita:

Il codice crea una funzione chiamata Celle_con_valori che prende due argomenti, un Gamma e un Valore .

Scopriamo gli studenti che hanno ottenuto 100 in ciascuna delle materie utilizzando questa funzione.

Selezionate un intervallo di celle nel vostro foglio di lavoro e inserite questa funzione nella prima cella dell'intervallo:

=Cells_with_Values(B3:E13,100)

[Qui B3:E3 è il mio set di dati (compreso il Intestazioni ) e 100 è il mio valore di corrispondenza, voi usate il vostro].

Quindi premere CTRL + SHIFT + INVIO ( Formula della matrice ). Verrà restituito un array composto dai nomi degli studenti che hanno ottenuto 100 in ogni materia, compresi i nomi degli studenti che hanno ottenuto 100 in ogni materia. Intestazioni .

3. Sviluppare un modulo utente per estrarre un valore se la cella corrispondente contiene un valore qualsiasi (o un valore specifico) in Excel VBA

Infine, svilupperemo un Modulo utente per estrarre i nomi degli studenti che si sono presentati (o hanno ottenuto determinati voti) in alcuni esami specifici.

⧪ Passo 1: apertura del modulo utente

Vai al sito Inserire> UserForm nel file VBA per aprire un nuovo editor Modulo utente Un nuovo Modulo utente chiamato UtenteForm1 sarà aperto.

⧪ Passo 2: trascinare gli strumenti nel modulo utente

Oltre al Modulo utente , si otterrà il Cassetta degli attrezzi Spostare il cursore sul simbolo Cassetta degli attrezzi e trascinare 4 etichette (Label1, Label2, Label3, Label4) e 3 ListBox (ListBox1, ListBox2, ListBox3) e un Casella di testo (TextBox1) in forma rettangolare sopra il Modulo utente .

Quindi trascinare un altro Etichetta (Label5) e un Casella di testo (TextBox2) nell'angolo in basso a sinistra del Modulo utente .

Infine, trascinare un elemento Pulsante di comando (Pulsante di comando1) nell'angolo in basso a destra.

Modificare le visualizzazioni del Etichette a Colonna di ricerca , Colonna di ritorno , Qualsiasi valore o un valore specifico , Valore, e Cellula di partenza.

Inoltre, è possibile modificare la visualizzazione del campo Pulsante di comando1 a OK .

⧪ Passo 3: scrivere il codice per ListBox3

Fare doppio clic su ListBox3 . A Sottoprocedura privata chiamato ListBox3_Click Si aprirà il seguente codice. Inserite il seguente codice.

 Private Sub ListBox3_Click() If UserForm1.ListBox3.Selected(0) = True Then UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False ElseIf UserForm1.ListBox3.Selected(1) = True Then UserForm1.Label4.Visible = True UserForm1.TextBox1.Visible = True End If End Sub 

⧪ Passo 4: scrittura del codice per il pulsante di comando1

Quindi fare doppio clic su Pulsante di comando1 . un altro Sottoprocedura privata chiamato Pulsante di comando1_Clicca Si aprirà il seguente codice. Inserite il seguente codice.

 Private Sub CommandButton1_Click() On Error GoTo Message Starting_Cell = UserForm1.TextBox2.Text Count1 = 1 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then Range(Starting_Cell).Cells(1, Count1) = Selection.Cells(1, i) Count1 = Count1 + 1 End If Next i If Count1 = 1 Then MsgBox "Select at least one Lookup Column.", vbExclamation ExitSub End If Data_Selected = 0 For i = 1 To Selection.Columns.Count If UserForm1.ListBox2.Selected(i - 1) = True Then Data_Selected = i Exit For End If Next i If Data_Selected = 0 Then MsgBox "Select One Return Column.", vbExclamation Exit Sub End If Count2 = 1 Count3 = 2 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then For j= 2 A Selection.Rows.Count Set Cell = Selection.Cells(j, i) If UserForm1.ListBox3.Selected(0) = True Then If Cell.Value "" Then Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If ElseIf UserForm1.ListBox3.Selected(1) = True ThenSe Cell.Value = UserForm1.TextBox1.Text Allora Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If Else MsgBox "Select Either Any Value or Specific Value.", vbExclamation Exit For End If Next j Count3 = 2 Count2 = Count2+ 1 End If Next i Exit Sub Message: MsgBox "Inserire un riferimento di cella valido come cella iniziale", vbExclamation End Sub 

⧪ Passo 5: scrittura del codice per l'esecuzione del modulo utente

Infine, inserire un nuovo elemento Modulo dal Barra degli strumenti VBA e inserirvi il seguente codice.

 Sub Run_UserForm() UserForm1.Caption = "Filtrare le celle che contengono valori" UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox3.BorderStyle = fmBorderStyleSingle UserForm1.ListBox3.ListStyle = fmListStyleOption For i = 1 ToSelection.Columns.Count UserForm1.ListBox1.AddItem Selection.Cells(1, i) UserForm1.ListBox2.AddItem Selection.Cells(1, i) Next i UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox3.AddItem "Qualsiasi valore" UserForm1.ListBox3.AddItem "Valore specifico" UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False Load UserForm1 UserForm1.Show End Sub 

⧪ Passo 6: esecuzione del modulo utente (l'output finale)

Il tuo Modulo utente è ora pronto per l'uso. Selezionare il set di dati dal foglio di lavoro ( B3:E13 qui) (compreso il Intestazioni ) ed eseguire il programma Macro chiamato Esegui_Form_Utente .

Il Modulo utente saranno caricati nel foglio di lavoro. Dal file Colonna di ricerca ho selezionato Fisica e Matematica perché voglio ottenere i nomi degli studenti che sono apparsi in Fisica e Matematica esami.

Dal Colonna di ritorno ho selezionato Nome dello studente perché voglio ottenere i nomi degli studenti.

E dal Qualsiasi valore o valore specifico ho selezionato Qualsiasi valore .

Infine, nel Cellula di partenza ho messo G3 .

Quindi fare clic su OK Avrai i nomi degli studenti che sono apparsi in Fisica e Matematica esami a partire dalla cella G3 .

Se si è selezionato Valore specifico dal Qualsiasi valore o valore specifico si sarebbe ottenuto un altro Casella di testo per inserire il valore specifico.

Qui ho inserito 100 .

Cliccare OK E ci saranno gli studenti che hanno ottenuto 100 in Fisica e Chimica .

Cose da ricordare

Abbiamo usato un array bidimensionale per restituire i nomi degli studenti nel file Funzione definita dall'utente descritto nell'esempio 2 .

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.