Saltar al contenido

Problema con #¡REF! en buscarv, al usar macro


Recommended Posts

Encontré esta web y me gustó mucho, explico mi caso

 

-use una macro, para que se genere una nueva pestaña y ahí se cree una tabla dinámica, basada en los datos de otra hoja, es decir la macro crea la pestaña y la tabla dinámica, para esto la macro también elimina cualquier pestaña que se llame "tabla dinámica" antes de crear la nueva, elimina la anterior y genera la hoja y la tabla dinámica nueva.

 

-a su vez hay otra hoja (llamada “datos”) que tiene una columna donde use la formula buscarv, y la formula busca un dato en la pestaña que creo la macro automáticamente, la que se llama “tabla dinámica”

 

=SI.ERROR(BUSCARV(B5,'tabla dinamica'!A:AH,2,0),0)

 

Bueno la formula funciona correcta y me arroja el dato, hasta ahí todo bien, le problema viene es que la pestaña “datos” donde está la formula buscarv, esa hoja se queda asi formulada, esa hoja no se tocara nunca más, y cada que la tabla dinámica se cree con la macro, el buscarv, tomara los datos nuevos, así debería funcionar.

PROBLEMA: cuando se ejecuta de nuevo la macro que elimina la pestaña de “tabla dinámica” y a su vez la misma macro crea de nuevo la pestaña “tabla dinámica” pero con los datos actualizados, entonces todas las fórmulas de buscarv en la hoja

de datos, les aparece el error “,#¡REF”

 

=SI.ERROR(BUSCARV(B5,#¡REF!A:AH,2,0),0)

 

Entiendo que es porque la formula no encuentra la referencia al momento que la macro elimina la hoja, pero aun cuando la macro crea de nuevo la hoja “tabla dinámica” con el mismo nombre y datos nuevos, pues la fórmula de buscarv, ya no se corrige, se queda con el error  “,#¡REF”

Necesito un poco de ayuda, si es que se puede hacer algo, como que la fórmula de buscarv, se actualice automáticamente con la nueva hoja de “tabla dinámica”

Enlace a comentario
Compartir con otras webs

tu apreciación es correcta, al eliminar la hoja "tabla dinamica", cualquier referencia a ella se convierte en #¡REF! => aun si la creas de nuevo :(

una alternativa es cambiar la forma de referencia en tu función (p.ej.)
de: =SI.ERROR(BUSCARV(B5,'tabla dinamica'!A:AH,2,0),0)
_a: =SI.ERROR(BUSCARV(B5,INDIRECTO("'tabla dinamica'!a:ah"),2,0),0)

el error volverá (momentáneamente) hasta que la hoja "tabla dinamica" sea (RE)creada

por cierto, si solo buscas en DOS columnas, no tiene sentido buscar en 34 ("A:AH"), por que no solo "A:B" ?

Enlace a comentario
Compartir con otras webs

Archivado

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

  • 96 ¿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
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
    • Saludos a ambos. Copiar y pegar por sí solas, no tengo el conocimiento de que sirvan como "evento" para actualizar las referencias que buscas hacer, en la forma que lo quieres hacer, ó la fórmula como la quieres hacer. Te recomiendo abrir un tema similar en Macros, es posible que algún Maestro te de alguna idea. Por otro lado, si debe ser con funciones, entonces tendías que interactuar con COLUMNA() y FILA() para que al pegar el destino "sepa" donde está ubicado e intentar cambiar la referencia. =INDIRECTO(CARACTER(COLUMNA()+64)&FILA()) Algo como eso se podría usar para obtener el código ASCII de la letra de la columna (donde 65 es el código para “A”), y FILA() devuelve el número de la fila. La función CARACTER() convierte el código ASCII en una letra. Luego, INDIRECTO() toma la cadena resultante (por ejemplo, “A1”, “B2”, etc.) y la usa como una referencia de celda. En ese caso, una posible idea de editar tu ejemplo sería: =SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&"1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")); 0)   Enfatizo que es una idea, es muy probable que hay que editar. Así como esta su tema, la recomendación del maestro toma relevancia porque especular o deducir no es lo adecuado para intentar ayudar en este tipo de consultas. Por esta causa de mi parte por ejemplo no puedo aportar algo adicional.
    • En el ejemplo te he puesto 1 segundo para no hacer largo el gif, cámbialo a tu necesidad
    • Sub RecorrerRangoC() Set hoja = ActiveSheet Set rango = hoja.Range("C2:C" & hoja.Cells(hoja.Rows.Count, "C").End(xlUp).Row) If rango.Cells.Count = 0 Then MsgBox "No hay datos en la columna C.", vbExclamation Exit Sub End If For Each celda In rango.SpecialCells(xlCellTypeVisible) celda.Select Application.Wait Now + TimeValue("00:00:01") Next celda End Sub Prueba y comenta
    • Gracias   Al final funciona con esta formula. =SI.ERROR(C5*BUSCARV(A$2;TablaReparto[#Todo];COINCIDIR(D5;TablaReparto[#Encabezados];));C5) En la celda C5 he puesto la OT. Es similar a lo que me das como solución. ¡Muchas gracias por la ayuda!  
  • 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.