Note: The other languages of the website are Google-translated. Back to English

¿Cómo borrar el contenido de la celda especificada si el valor de otra celda cambia en Excel?

Suponiendo que desea borrar un rango de contenido de celda especificado si se cambia el valor de otra celda, ¿cómo puede hacerlo? Esta publicación le mostrará un método para resolver este problema.

Borre el contenido de celda especificado si el valor de otra celda cambia con el código VBA


Borre el contenido de celda especificado si el valor de otra celda cambia con el código VBA

Como se muestra a continuación en la captura de pantalla, cuando se cambia el valor en la celda A2, el contenido en la celda C1: C3 se borrará automáticamente. Haz lo siguiente.

1. En la hoja de trabajo, borrará el contenido de la celda según los cambios de otra celda, haga clic con el botón derecho en la pestaña de la hoja y seleccione Ver código desde el menú contextual. Ver captura de pantalla:

2. En la apertura Microsoft Visual Basic para aplicaciones ventana, copie y pegue debajo del código VBA en la ventana Código.

Código de VBA: borre el contenido de celda especificado si cambia el valor de otra celda

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2")) Is Nothing Then
        Range("C1:C3").ClearContents
    End If
End Sub

Nota:: En el código, B2 es la celda en la que borrará el contenido de la celda, y C1: C3 es el rango del que borrará el contenido. Cámbielos según sea necesario.

3. presione el otro + Q llaves para cerrar el Microsoft Visual Basic para aplicaciones ventana.

Luego puede ver el contenido en el rango C1: C3 se borra automáticamente cuando el valor en la celda A2 cambia como se muestra a continuación.


Artículos relacionados:


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior
Comentarios (37)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
¡El código para borrar una celda si otra cambia funciona muy bien! Pero necesito que funcione al revés... ¿Cómo se escribe ese código?


Gracias por su ayuda
Este comentario fue minimizado por el moderador en el sitio
Querido Scott
¿A qué te refieres con trabajar al revés? Cuando borra manualmente el contenido de ciertas celdas (C1: C3), ¿borra el contenido de la celda A2 automáticamente?
Este comentario fue minimizado por el moderador en el sitio
hola, esto funciona solo para una celda de fuente fija (A2), ¿cómo funciona esto dinámicamente, como que la fuente es una celda variable? traté de escribir
A=celdaactiva.fila
Si no intersecta (objetivo, rango ("A" y A)) no es nada, entonces
Rango("C1:C3").ClearContents
Si terminar

esto debería hacer el trabajo con respecto a activecell (es decir, selección) pero no está funcionando
gracias
Este comentario fue minimizado por el moderador en el sitio
Buenos días,
Intente con el siguiente código VBA. Gracias por tu comentario.

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Si (Not Intersect(Target, Rows(1)) Is Nothing) And (Target.Count = 1) Entonces
Rango("C1:C3").ClearContents
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola, estoy buscando una manera de borrar un rango de celdas de datos cuando se ingresa una "x" en una celda determinada. Usé la fórmula anterior y funcionó perfectamente para esa fila. El problema es que necesito extenderlo a muchas filas. Por ejemplo, si se ingresa una "x" en "D13", necesito borrar el rango J:13 - v:13. También necesito que eso suceda si se ingresa una x en "D14", ya que necesito que se borre el rango d: 14 - v: 14. ¿Hay alguna manera de escribir eso? ¡Gracias por tu ayuda!
Este comentario fue minimizado por el moderador en el sitio
Hola, esto no funciona para el mío. Nada cambia pero tampoco errores. ¿Algun consejo?
Este comentario fue minimizado por el moderador en el sitio
Buenos días,
Lo siento por los inconvenientes ocasionados. ¿Proporcionaría su versión de Office? Gracias por tu comentario.
Este comentario fue minimizado por el moderador en el sitio
En el caso de A2, ¿cómo hago referencia a una celda de una hoja de trabajo diferente?
Este comentario fue minimizado por el moderador en el sitio
alguna forma de hacer esto sin VBA?
Este comentario fue minimizado por el moderador en el sitio
Hola sonia
No encontré ninguna solución, excepto VBA. Gracias por tu comentario.
Este comentario fue minimizado por el moderador en el sitio
¿Qué código de VBA uso si tengo una tabla y necesito varios espacios en blanco?

Mi mesa es B3:E7. Si se borra el contenido de la columna B, me gustaría borrar los datos de las columnas C, D, E para esa fila. Tengo lo siguiente para la fila 3, pero me gustaría lo mismo en las filas 4,5,6, 7, XNUMX y XNUMX.

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Si no intersecta (objetivo, rango ("B3")) no es nada, entonces
Rango("C3:E3").ClearContents
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
¿Qué pasa con uno para borrar el contenido de cualquier celda con un doble clic?
Este comentario fue minimizado por el moderador en el sitio
Hola, ¿cómo repites el código para más de una celda en el ejemplo, es decir, si borro el contenido de las celdas a4 y a5, quiero borrar el contenido de b4:z4 y b5:z5 respectivamente, necesito hacer esto? para una hoja de cálculo grande con 1000 filas, cualquier consejo será muy apreciado
Este comentario fue minimizado por el moderador en el sitio
Hola Julian, también estoy buscando lo mismo, avísame si tienes alguna solución para esto.
Este comentario fue minimizado por el moderador en el sitio
Cambie los números en consecuencia.
Dim i como entero
Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
For i = 2 Para 10
rango de mirada = "A" & yo
rango de contenido = "B" & i & ":" & "C" & i
If Not Intersect(Target, Range(lookrange)) No es nada Entonces
Rango (rango de contenido). ClearContents
Si terminar
Siguiente i
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola sagarsrinivas0312, muchas gracias por este código. ¡Ya estoy buscando una semana para esta solución!
Este comentario fue minimizado por el moderador en el sitio
Esto es genial, gracias. ¿Cómo hago esto varias veces... para borrar otras celdas basadas en una columna diferente?
Este comentario fue minimizado por el moderador en el sitio
riusciresti a scrivermelo in modo che debba solo fare copia ed incolla?
non riesco veramente a farlo funzionare

¡muchas gracias
Este comentario fue minimizado por el moderador en el sitio
Hola,
Estoy tratando de borrar celdas adicionales de la columna A y B si encuentro celdas en blanco en la columna C de la hoja llamada "Vendido" y la macro se ejecuta desde la hoja llamada "Factura".

Obtuve el siguiente código de un sitio de ayuda, pero no puedo obtener el deseado.
por favor ayúdame al respecto. Captura de pantalla adjunta lo que quiero.

Borrar suma()

Atenuar mientras dure
Para g = 2 Para ActiveSheet.UsedRange.Rows.Count
Si Celdas(g, "C").Valor = "" Entonces
Celdas(g, "A").ClearContents
Celdas(g, "B").ClearContents

Si terminar
Siguiente
Suma final
Este comentario fue minimizado por el moderador en el sitio
¿Esto no parece funcionar si el contenido de la celda especificado está controlado por una celda en otra hoja? ¿Hay una solución para esto?
Ejemplo usando sus nombres de celda
Si la celda "A2" es (=hoja1[@[a5]] y este número cambia en la hoja 1, entonces cambia el contenido de A2, no borra el contenido en el rango especificado.
Este comentario fue minimizado por el moderador en el sitio
Hoja de trabajo privada Sub_Activate ()
Si Rango("S2") <> Rango("A2").Valor Entonces
Rango("S2") = Rango("A2").Valor
Rango("d2:g2").ClearContents
Si terminar
'S2' se puede sustituir con cualquier celda fuera del rango de datos. Lo que está haciendo VBA es actualizar automáticamente los datos para 'S2', luego los datos que se actualizan son los que controlan el rango especificado y si se borran o no.
Esta es la única forma que he encontrado para hacer esto con éxito cuando uso celdas referenciadas tanto dentro como fuera de la hoja de trabajo.
Este comentario fue minimizado por el moderador en el sitio
No es exactamente lo que necesito, pero llegar allí. Tengo una celda vacía E3. Tengo datos en B3. Cuando pongo datos en E3, si es lo mismo que B3, entonces B3 se elimina. Espero que me puedan ayudar.
Este comentario fue minimizado por el moderador en el sitio
¿Es posible borrar el contenido de una celda específica si la celda de activación contiene un número específico? Diga, SI la celda A1 = 1, entonces borre las celdas A2:A4.
Este comentario fue minimizado por el moderador en el sitio
Bonjour tout le monde,

Besoin d'aide, j'ai besoin d'effacer le contenu d'une cellule de la colonne "I" si la cellule (de la même ligne) de la colonne "O" =0, sur environ 2000 lignes avec des titres tout le 10 lignes entorno.
Este comentario fue minimizado por el moderador en el sitio
Hola,

Solo busco una manera fácil de hacerlo, de modo que si "B2" ha seleccionado "Sí" de la lista de validación de datos, la celda B3 borrará sus datos... y viceversa: si "B3" ha seleccionado "Sí" de la lista de validación de datos. lista de validación de datos, la celda "B2" borraría sus datos.

Básicamente B2 or B3 puedo decir ""(de la lista de validación de datos) pero nunca al mismo tiempo, uno debe limpiar el otro.
Este comentario fue minimizado por el moderador en el sitio
Hola Jeff,
El siguiente código de VBA puede hacerte un favor. Por favor inténtalo.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220721
If Target.Cells.Count > 1 Then Exit Sub
    If (Not Intersect(Target, Range("B2")) Is Nothing) And (Target.Value = "Yes") Then
        Range("B3").ClearContents
        Else
        If (Not Intersect(Target, Range("B3")) Is Nothing) And (Target.Value = "Yes") Then
        Range("B2").ClearContents
    End If
    End If
End Sub
Este comentario fue minimizado por el moderador en el sitio
Buongiorno, avrei bisogno di cancellare una serie di caselle (un rettangolo, quindi su più righe e colonne) en base al valore di un'altra cella. es: se la cella A2 è inferiore di 12, il quadrato con vertici opposto C2 : F4 venga cancellato.
¡muchas gracias
Este comentario fue minimizado por el moderador en el sitio
Hola Pedro,
Lo siento, no entiendo muy bien tu pregunta. ¿Le importaría subir una captura de pantalla de sus datos?
Este comentario fue minimizado por el moderador en el sitio
Помогите с решением, VBA не знаю. Мне нужно при изменении ячейки удалить данные из другой и чтобы это дейстовало на весь столбец.
Меняю А2 удаляется из G2, меняю А3 удаляется из G3, меняю A6 удаляется из G6 и т.д.

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Si no interseca (objetivo, rango ("A2")) no es nada, entonces
Rango("G2").ClearContents
Si terminar
End Sub


Данный код хорош для одной ячейки, а как его размножить на все ячейки столбца?
Este comentario fue minimizado por el moderador en el sitio
Hola Наталья,
El siguiente código de VBA puede ayudarlo a resolver el problema. Por favor inténtalo.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221013
    Dim xRight As Range
    Dim KeyCells As Range
    Set KeyCells = Range("A:A")
    Set xRight = Target.Offset(0, 6)
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        xRight.ClearContents
    End If
End Sub
Este comentario fue minimizado por el moderador en el sitio
hallo,

Al punto 3.
Die Taste "Andere" Finde ich nicht auf meiner Windows Tastatur. Ich Habe Strg, Alt, Tab... allerdings die Taste Andere gibt es auf meiner Tastatur leider nicht.

Lieben Gruss Mathias
Este comentario fue minimizado por el moderador en el sitio
Hola Mathias,
Si no puede encontrar la tecla correspondiente en el teclado. Puede simplemente hacer clic en el a Salvar botón en el Ventana de aplicaciones de Microsoft Visual Basic para guardar el código y luego cerrar manualmente esta ventana.
Este comentario fue minimizado por el moderador en el sitio
Hola,
El siguiente código funciona como se anuncia, pero ocurren los siguientes problemas:

En primer lugar, al cambiar el tamaño de la tabla de destino, todos los datos de la tabla se borran Y, todos los encabezados excepto la columna 1 se vuelven a etiquetar como "Columna 1, Columna 2, etc. Y el libro de trabajo se guarda automáticamente y elimina el deshacer.

En segundo lugar, cuando elimino cualquier fila de la tabla, aparece un "Error de tiempo de ejecución 1004 (Falló el desplazamiento del método del rango del objeto).


Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F3:F500")) Is Nothing Then
     Target.Offset(0, 1).ClearContents
    ElseIf Not Intersect(Target, Range("G3:G500")) Is Nothing Then
        Target.Offset(0, 1).ClearContents
        Target.Offset(0, 2).ClearContents
    ElseIf Not Intersect(Target, Range("H3:H500")) Is Nothing Then
        Target.Offset(0, 1).ClearContents
    End If
End Sub


¿Alguna idea de lo que podría estar mal?

Gracias de antemano!
Este comentario fue minimizado por el moderador en el sitio
Hola, estoy trabajando en una base de datos en OFFICE ONLINE a través de ONEDRIVE, quiero que al PONER "CANCELADO" o "NOSHOW" elimine el contenido de la fila seleccionada.
Este comentario fue minimizado por el moderador en el sitio
Hola angel,
El código VBA no funciona en Office Online. Lo siento por los inconvenientes ocasionados.
No hay comentarios publicados aquí todavía
Ver más
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Seguinos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL