Hola a todos!.
El post de hoy es una petición que me ha realizado un lector pidéndome que publique un post en el que muestre la instrucción Select Case y al mismo tiempo cómo se puede seleccionar la última celda con datos de una columna.
Realmente en mis post siempre publico la forma de obtener la última celda con datos suponiendo que no existen filas vacías. En una base de datos no deben existir filas vacías, siempre existe algún campo que debe tener datos ej, ID. Pero puede darse el caso que estemos trabajando con columnas donde algunas celdas están vacías, si esto es así, este post os puede ser de utilidad.
Imaginad que tenéis varias celdas con números, así:

De forma que necesitamos llegar a la fila 24 y además utilizaremos la instrucción select case para hacer lo siguiente:
- Los números de 0 a 4 se convierten en una A
- Los números de 5 a 7 se convierte en una B
- Los número de 7 a 9 se convierten en una C
Para programar estas acciones utilizaremos el siguiente código:
Option Explicit
Sub SELECT_CASE()
'Definimos variables
Dim sDato As String, nItem As String, final As Long
Dim i As Long, j As Long, sLargo As Long
With Sheets("DATOS")
'Obtenemos última fila
final = .Range("A" & .Rows.Count).End(xlUp).Row
'Iniciamos bucle por cada celda de la columna A
For i = 2 To final
sLargo = Len(.Cells(i, 1))
'Si hay datos entonces iniciamos segundo bucle
If sLargo > 0 Then
'Extraemos cada número de la celda seleccionada
For j = 1 To sLargo
nItem = Mid(.Cells(i, 1), j, 1)
'Iniciamos estructura select case
Select Case nItem
Case 0 To 4
nItem = "A"
Case 5 To 7
nItem = "B"
Case 8 To 9
nItem = "C"
End Select
'Agrupamos el resultado
sDato = sDato & nItem
Next j
End If
'Pasamos el dato a la columna B
.Cells(i, 2) = sDato
'Igualamos Sdato a ""
sDato = vbNullString
'Seguimos con el próximo item
Next i
End With
End Sub
En efecto, con esta línea llegamos a la fila 24 en la columna A:
final = .Range("A" & .Rows.Count).End(xlUp).Row
Y así ya tenemos un fin en nuestra instrucción For-next y podemos crear un bucle que recorra todas las filas.
Luego con el Select case transformamos los casos:
Select Case nItem
Case 0 To 4
nItem = "A"
Case 5 To 7
nItem = "B"
Case 8 To 9
nItem = "C"
End Select
Sin duda muy sencillo de hacer y que nos muestra que además podemos establecer rangos en el select case.
El resultado es el siguiente:

Y el resultado es el esperado según los requisitos definidos en el select case. Y con esto finalizo el post de hoy. Espero que os haya resultado interesante y os sea de utilidad en vuestros proyectos.
Descarga el archivo de ejemplo pulsando en:
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies
Hola….. es muy interesante tu trabajo….sobretodo la Profesionalidad con la que está explicado….!!!!Felicitaciones!!!….excelente trabajo….recién estoy descubriéndolos pero se han ganado mi admiración….soy aficionado a Excel….y me gusta aprender…y que mejor si es de la mano de expertos y grandes maestros como tu.
Muchas gracias Jorge, un saludo!!