Excel VBA: Si la Celda Contiene un Valor Entonces Devuelve una Salida Especificada

  • Compartir Este
Hugh West

En este artículo, te mostraré cómo puedes analizar la situación en Excel VBA si una celda contiene un valor. Aprenderá a analizar la situación tanto para cualquier valor como para un valor concreto.

Excel VBA Análisis: Si la celda contiene un valor entonces (Vista rápida)

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo apareció en el examen de Física." End If End Sub 

Descargar el cuaderno de prácticas

Descárgate este cuaderno de prácticas para ejercitarte mientras lees este artículo.

VBA Si la celda contiene el valor Then.xlsm

Excel VBA Análisis: Si la Celda Contiene un Valor Entonces Devuelve la Salida (Análisis Paso a Paso)

Aquí tenemos un conjunto de datos con las notas de algunos alumnos de Física, Química y Matemáticas de una escuela llamada Jardín de Infancia Girasol.

Las celdas en blanco significan que el alumno no apareció, es decir, estuvo ausente en ese examen concreto. Ahora vamos a analizar la situación, si una celda contiene un valor o no, con este conjunto de datos.

⧪ Paso 1: Declarar la célula

En primer lugar, tenemos que declarar la celda cuyo valor queremos analizar. Vamos a analizar si Jennifer Marlo se presentó o no al examen de Física.

Por lo tanto, tenemos que comprobar si la célula C12 contiene un valor o no.

Para ello, en primer lugar, tenemos que declarar la celda C12 .

La línea de código para lograr esto será:

 Set Celda = Rango("C12").Celdas(1, 1) 

⧪ Paso 2: Comprobación de si la celda contiene un valor (incluido un valor determinado)

A continuación, tenemos que comprobar si la celda contiene un valor o no. Ejecutaremos esto utilizando una función Si la condición La línea de código será:

 If Celda.Valor "" Then 

Este código se ejecutará si la celda contiene algún valor. Para comprobar un valor (Por ejemplo, si contiene 100 o no), utilice ese valor específico con un comando Igual a símbolo.

 If Celda.Valor "" Then 

⧪ Paso 3: Asignación de la tarea

A continuación, tienes que configurar una tarea que se ejecutará si la celda contiene un valor (o un valor específico).

En este caso, queremos mostrar el mensaje "Jennifer Marlo apareció en el examen de Física". Así que la línea de código será:

 MsgBox "Jennifer Marlo se presentó al examen de Física". 

⧪ Paso 4: Finalización del bloque If.

Por último, hay que declarar el final del bloque If.

 Fin If 

Así que el completo VBA código será:

⧭ Código VBA:

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo apareció en el examen de Física." End If End Sub 

⧭ Salida:

Ejecute este código pulsando el botón Ejecutar Sub/UserForm de la barra de herramientas.

Aparecerá el mensaje "Jennifer Marlo apareció en el examen de Física". como la célula C12 contiene un valor, de 50 .

Ejemplos que Involucran Si la Celda Contiene un Valor Entonces una Salida Especificada con Excel VBA

Hemos aprendido a analizar si una celda contiene un valor o no en VBA Veamos ahora algunos ejemplos para entenderlo mejor.

1. Desarrollo de una Macro para Filtrar un Valor Si la Celda Correspondiente Contiene algún Valor entonces en Excel VBA

Desarrollemos una Macro para filtrar a los estudiantes que se presentaron a cada uno de los exámenes.

Es decir, tenemos que comprobar las celdas que contienen las notas de cada una de las asignaturas y ver si contienen un valor o no.

Si es así, tenemos que averiguar el nombre del alumno correspondiente.

El completo VBA código para lograr esto será:

⧭ Código VBA:

 Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Introduzca la referencia de la primera celda de los datos filtrados: ") 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 

⧭ Salida:

Seleccione el conjunto de datos (Incluido el Cabeceras ) y ejecute esto Macro .

En primer lugar, se le pedirá que introduzca la referencia de la primera celda en la que desea que se filtren los datos. Yo he introducido G3 .

A continuación, haga clic en OK Obtendrá los nombres de los estudiantes que se han presentado a cada uno de los exámenes (incluidos los de los alumnos que se han presentado). Cabeceras ) en un nuevo conjunto de datos a partir de la celda G3 .

2. Creación de una Función Definida por el Usuario para Ordenar un Valor Si la Celda Correspondiente Contiene un Valor Específico entonces en Excel VBA

Ahora crearemos una función definida por el usuario que devolverá los nombres de los alumnos que han obtenido una nota determinada en cada una de las asignaturas.

El procedimiento es prácticamente el mismo que el anterior. Tenemos que comprobar las celdas que contienen las notas de cada una de las asignaturas y ver si son iguales o no a un valor determinado.

Si lo son, devolveremos el nombre del alumno correspondiente.

En VBA código será:

⧭ Código 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 

⧭ Salida:

El código crea una función llamada Celdas_con_valores que toma dos argumentos, un Gama y un Valor .

Averigüemos los alumnos que han obtenido 100 en cada una de las asignaturas utilizando esta función.

Seleccione un rango de celdas en su hoja de cálculo e introduzca esta función en la primera celda del rango:

=Cells_with_Values(B3:E13,100)

[Aquí B3:E3 es mi conjunto de datos (incluido el Cabeceras ) y 100 es mi valor coincidente. Usa el tuyo].

A continuación, pulse CTRL + MAYÚS + INTRO ( Fórmula Array Devolverá una matriz con los nombres de los alumnos que han obtenido 100 puntos en cada asignatura, incluido el nombre del alumno. Cabeceras .

3. Desarrollo de un UserForm para Extraer un Valor si la Celda Correspondiente Contiene cualquier Valor (O un Valor Específico) en Excel VBA

Por último, desarrollaremos un Formulario de usuario para extraer los nombres de los estudiantes que se presentaron (u obtuvieron notas específicas) en algunos exámenes concretos.

⧪ Paso 1: Abrir el UserForm

Ir a la Insertar> UserForm en el VBA para abrir un nuevo Formulario de usuario Un nuevo Formulario de usuario llamado FormularioUsuario1 se abrirá.

⧪ Paso 2: Arrastrar herramientas al formulario de usuario

Además del Formulario de usuario obtendrá el Caja de herramientas Mueva el cursor sobre Caja de herramientas y arrastre 4 etiquetas (Label1, Label2, Label3, Label4) y 3 ListBoxes (ListBox1, ListBox2, ListBox3) y un TextBox (TextBox1) en forma rectangular sobre el Formulario de usuario .

A continuación, arrastre otro Etiqueta (Label5) y un TextBox (TextBox2) en la esquina inferior izquierda del Formulario de usuario .

Por último, arrastre un CommandButton (CommandButton1) en la esquina inferior derecha.

Cambiar las pantallas de Etiquetas a Columna de búsqueda , Columna de retorno , Cualquier valor o un valor específico , Valor, y Célula inicial.

Además, cambia la visualización del BotónMando1 a OK .

⧪ Paso 3: Escribir código para ListBox3

Haga doble clic en ListBox3 . A Subprocedimiento privado llamado ListBox3_Click Introduzca el siguiente código.

 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 

⧪ Paso 4: Escribir código para CommandButton1

A continuación, haga doble clic en BotónMando1 . Otro Subprocedimiento privado llamado CommandButton1_Click Introduzca el siguiente código.

 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 To 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 ThenIf Cell.Value = UserForm1.TextBox1.Text Then 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 "Enter a Valid Cell Reference as the Starting Cell.", vbExclamation End Sub 

⧪ Paso 5: Escribir el código para ejecutar el UserForm.

Por último, inserte un nuevo Módulo del Barra de herramientas VBA e inserte allí el siguiente código.

 Sub Run_UserForm() UserForm1.Caption = "Filtrar celdas que contienen valores" 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 "Cualquier valor" UserForm1.ListBox3.AddItem "Valor específico" UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False Load UserForm1 UserForm1.Show End Sub 

⧪ Paso 6: Ejecutar el UserForm (El resultado final).

Su Formulario de usuario Seleccione el conjunto de datos de la hoja de cálculo ( B3:E13 aquí) (Incluido el Cabeceras ) y ejecute el Macro llamado Run_UserForm .

En Formulario de usuario se cargará en la hoja de cálculo. Desde la ventana Columna de búsqueda he seleccionado Física y Matemáticas porque quiero obtener los nombres de los estudiantes que aparecieron en Física y Matemáticas exámenes.

Desde el Columna de retorno he seleccionado Nombre del alumno porque quiero obtener los nombres de los estudiantes.

Y desde el Cualquier valor o valor específico he seleccionado Cualquier valor .

Por último, en el Célula inicial caja, he puesto G3 .

A continuación, haga clic en OK Obtendrá los nombres de los estudiantes que aparecieron en Física y Matemáticas exámenes a partir de la célula G3 .

Si hubiera seleccionado Valor específico del Cualquier valor o valor específico tabla, habrías obtenido otra Cuadro de texto para introducir el valor específico.

Aquí he introducido 100 .

Haga clic en OK Y tendrás a los estudiantes que consiguieron 100 en Física y Química .

Cosas para recordar

Usamos una matriz bidimensional para devolver los nombres de los alumnos en la tabla Función definida por el usuario descrito en el ejemplo 2 .

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.