Saltar al contenido

Permitir desbordamiento en fórmulas


Ir a la solución Solucionado por Antoni,

Recommended Posts

publicado

Hola buenas,

 

Tengo el siguiente problema, quiero utilizar la formula UNICOS en VBA para sacar los resultados únicos de una columna (columna que tiene el nombre de "Soporte" asignado) de una tabla.

El código de VBA es el siguiente:

ActiveCell = Application.WorksheetFunction.Unique([Soporte])

El problema que tengo, es que solo me devuelve un resultado cuando el resultado que necesito deberían ser varios, pero imagino que en el código VBA al referirme a una única celda solo me devuelve un resultado.

En cambio en excel al utilizar la funcion únicos, como permite desbordamiento me devuelve todos los resultados que necesito uno debajo de otro.

=UNICOS(Soporte)

Como puedo ,utilizando la función en VBA, permitir ese  desbordamiento? Siempre y cuando sea posible por supuesto.

En la imagen adjunto una captura del documento, el resultado que quiero es el que empieza en F5, y el resultado que obtengo con VBA es que me devuelve un único soporte (E5).

Mi intención es realizarlo desde VBA

Muchas gracias de antemano.

CapturaExcel.thumb.jpg.2c4695ade35ab4ace1b68d94a1dd4131.jpg

publicado

Hola

No confundir funciones con WorksheetFunctions, no son exactamente lo mismo. En VBA al generarse una matriz/array, hay que tratarlo como tal:

Sub misunicos()

Dim mimatriz As Variant
Dim x As Long

mimatriz = Application.WorksheetFunction.Unique(Range("B5:B13"))
x = UBound(mimatriz, 1)
Range("G5:G" & 5 + x - 1).Value = mimatriz

End Sub

Saludos

publicado (editado)

Lo mismo que te ha contado Abraham, pero teniendo en cuenta la tabla.

Sub ListarÚnicos()
Dim Únicos As Variant
Únicos = WorksheetFunction.Unique(ListObjects(1).DataBodyRange.Columns(1))
Range("G5").Resize(UBound(Únicos), 1) = Únicos
End Sub

 

Editado el por Antoni
publicado
En 26/12/2023 at 18:39 , Abraham Valencia dijo:

Hola

No confundir funciones con WorksheetFunctions, no son exactamente lo mismo. En VBA al generarse una matriz/array, hay que tratarlo como tal:

Sub misunicos()

Dim mimatriz As Variant
Dim x As Long

mimatriz = Application.WorksheetFunction.Unique(Range("B5:B13"))
x = UBound(mimatriz, 1)
Range("G5:G" & 5 + x - 1).Value = mimatriz

End Sub

Saludos

 

En 26/12/2023 at 19:13 , Antoni dijo:

Lo mismo que te ha contado Abraham, pero teniendo en cuenta la tabla.

Sub ListarÚnicos()
Dim Únicos As Variant
Únicos = WorksheetFunction.Unique(ListObjects(1).DataBodyRange.Columns(1))
Range("G5").Resize(UBound(Únicos), 1) = Únicos
End Sub

 

Buenas,

Muchísimas gracias Antoni y Abraham por responder.

Tengo una duda mas, ¿y si quiesiera introducir con VBA directamente la fórmula en la celda?

He utilizado el siguiente código:

Range("G5").Formula = "=UNICOS(Soporte)"

El problema que tengo es que cuando ejecuto el código, en la celda me aparece esta función:

=@UNICOS(Soporte)

Imagino que al incluir "@" lo que hace es referirse a una única celda por lo que me da el error de #¡VALOR! ya que al tener ese "@" imagino que no permite el desbordamiento. Pero si manualmente le quito ese "@" me da el resultado correcto, ya que permite el desbordamiento.

¿Como puedo hacer para introducir esa fórmula desde VBA sin el dichoso "@"?

Todavía no estoy seguro si lo usaré desde VBA o si escribiré la fórmula en la celda.

Muchas gracias de antemano y un saludo!

  • Solution
publicado
Range("G5").Formula2Local = "=UNICOS(Soporte)"

'O TAMBIÉN

Range("G5").Formula2 = "=UNIQUE(Soporte)"

 

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • 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.