Saltar al contenido

ayuda! macro que borre celdas?


Ganem19

Recommended Posts

publicado

macro que borre contenido de celdas especificas?

Muy buenas Tardes

Me han pedido en mi trabajo que realize una base de datos que pueda borrar ciertas por asi decirlo encuestas y es una base de datos de mas de 50000 filas, cada encuesta tiene su numero unico y quisiera que me ayudaran a hacer una macro que hago lo siguiente ya que programar si no es lo mio y me urge:

Al yo ingreser un numero de encuesta o una lista de numeros como les sea mas facil la macro encuentre la fila donde esta ese numero unico y borre las celdas de la misma fila en la columna X

al archivo que adjunto tiene las notas para entender un poco mas

macro.xls

publicado

Revisa las normas del foro, por favor, en cuanto a publicación de temas........

Un saludo,

Tese

- - - - - Mensaje combinado - - - - -

Entonces, las 3 notas las debe eliminar?

Y al ejecutarla sería para un solo "Response id" ó tienes algún liistado de ellos para hacer lo mismo?

Un saludo,

Tese

publicado

pues al ejecutarlo tendre un listado de response id, pero si solo se puede de 1 a 1 puedo ir metiendolo 1 por uno y si se pudiera en ves de borrarlas notas que ponga el text "(en blanco)"

publicado

Adjunta, por favor, otro archivo con el listado ó bien colócalo en otra hoja del archivo que subiste y así lo tomamos como referencia. Se puede y "se debe" hacer con todos a la vez...jejeje....para eso se automatiza........

Un saludo,

Tese

publicado

Re: macro que borre contenido de celdas especificas?

Muy buenas Tardes

Al yo ingreser un numero de encuesta o una lista de numeros como les sea mas facil la macro encuentre la fila donde esta ese numero unico y borre las celdas de la misma fila en la columna X

al archivo que adjunto tiene las notas para entender un poco mas

Hola!

Y no te funciona el filtro avanzado para lo que quieres? incluso sin necesidad de tener que programar. Con el filtro avanzado escribes una lista de los números de encuesta a eliminar, se filtran los registros y solo eliminas los visibles de manera manual!

Ahora que si es indispensable que sea en macro hay muchos ejemplos en este foro o en internet de como programar el filtro avanzado!

Aquí hay un ejemplo similar haciendo uso de vba:

https://www.ayudaexcel.com/foro/macros-programacion-vba-10/macro-que-ejecuta-filtro-avanzado-25028/

Suerte!

publicado

pues pueden darle se puede agarrar una lista de los response id q aparecen ahi, ya que por cuestiones de confidencialidad no puedo porner la lista verdadera, este solamente era como un ejemplo para yo aplicarlo en el reporte real

publicado

Nadie te ha pedido, Ganem19, los datos reales....y si lo hace, no se los des.......jejeje.........lo que quería saber era cómo realmente vas a trabajar tú cuando estés solo frente a la macro (como en la película "Sólo ante el peligro"...jejeje).....es decir, ¿vas a tener ese listado en el mismo archivo, pero en distinta hoja?........ó ¿vas a tenerlo en otro archivo?.......como ves, estas preguntas son importantes porque el código tiene que estructurarse en base a lo que tú realmente vas a necesitar.

Si me lo aclaras, seguro que al final estarás más satisfecho del resultado.

Un saludo,

Tese

publicado

Ok, Ganem19.........entonces lo voy montando......

Un saludo,

Tese

- - - - - Mensaje combinado - - - - -

Pues ahí lo tienes.........

He creado en la "Sheets2" un listado de ejemplo.......y un botón para ejecutar la macro (esto es algo para facilitar las pruebas...puedes hacer con él lo que te plazca...)

Si el nombres real de tu hoja "destino" es diferente deberías cambiarlo en el código.......

Ya me dirás qué tal.......

Un saludo,

Tese

macro.rar

macro.rar

publicado

esta muy bien gracias lo que necesitaba xD solo una duda cuando me aparec un dato que NO EXISTE ya no borra los siguentes de abajo abria alguna forma de modificar eso que no exista pero que siga corriendo con los que siguen?

publicado

muchisimas gracias ya lo pude modificar para el archivo del trabajo solo una pregunta en la Sheet 2 con la lista de borrados, hay alguna forma que digamos en la columna D tengo si se aprovo o no con las palabras YES y NO, hay forma de que la macro solo borre las encuestas que digan YES en esa columna

publicado

perfecto muchisimas gracias hoy si funciona al a perfeccion, solo una duda cuando la correo con el archivo lo hace todo rapido pero al correrla en la base de datos se tarda mucho es por la cantidad de opciones, ( noc mucho ya que primera ves que trato de trabajar con una macro en vba)

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.