Seleccionar diferentes columnas de una tabla de excel
Hola
Tengo una tabla de excel con muchas columnas con sus encabezados,
quisiera saber si puedo llamar unicamente las columnas que necesito para
ingresar datos, dichas columnas varían según la necesidad de trabajo,
desde ya muchas gracias Saludos
Por poder se puede pero según que manera. Te expongo una. Solicitar una llamada a una columna, preguntar por el dato, buscarlo, encontralo y modificarlo y volver a preguntar por otra columna y así hasta que tu quisieras. ¿Qué te parece?
Hola mfervic Gracias por tu pronta respuesta, no tengo que buscar datos para modificar sino ingresar datos. Tratare de ser un poco mas extenso en la consulta.
La tabla de excel la uso como base de datos, la cual cuenta con muchas columnas pero tratare de explicarlo de forma sencilla. La base es para ingresar datos de un taller de corte de ropa y los talles serian Small - Medium - Large - Extra Large (es mucho mas extenso marco esto talles como ejemplo)
columna A=Cliente, columna B=Fecha, columna C=Código, columna D=TalleS, columna E=TalleM, columna F=TalleL, columna G=TalleXL
En las columnas A B C siempre se ingresan datos, pero supongamos que un cliente unicamente quiere cortar prendas talle Medium y talle Extra Large; como podría visualizar en este caso unicamente estas cinco columnas A B C E G
Espero haber sido claro en la explicación, lo que necesito en este caso es poder seleccionar las cinco columnas o seis o cuatro según la necesidad de cada cliente
Nuevamente te doy las gracias por tu tiempo y atención
Un saludo desde Bs As
Luis
Perdona por la demora. Te explico. No puedes ocultar columnas según la fila que tengas seleccionada, es decir, cuando ocultas una columna (no confundir con eliminar la columna) lo que haces es evitar que se vean los datos de ésta temporalmente. Lo que se podría hacer es dependiendo de las necesidades del cliente y única y exclusivamente para ese cliente, ocultar ciertas columnas pero una vez terminada la gestión, volver a recuperarlas todas. ¿Otra cosa que se podría hacer y mucho menos farragoso? Una vez introducido los datos del cliente, escribir un sencillo código que se ejecute con un botón, el cual me pregunte y me añada los datos pertinentes a las necesidades del cliente. Las columnas que no vaya a necesitar, quedan en blanco. Si a posteriori, lo que quieres es buscar un cliente para poder gestionar los datos, se utiliza otro código muy sencillo que te facilita esta busqueda.
Hola mfervic Por lo que comentas creo que la ultima opción seria lo mas practico para ingresar los datos Cualquier ayuda que me puedas brindar sera bienvenida
Saludos
Luis
Para la creación de variables). ¿El cliente es un nombre o un código numérico? Mi consejo para un futuro. Si la columna cliente es un nombre, que te crees una columna numérica (por ejemplo, id_cliente) que haga referencia a un cliente en concreto porque trabajar con nombres puede ocasionar confusiones.
Y la última, confirmar si las columnas a trabajar son de la A a la G como escribiste en el post anterior.
Hola mfervic Disculpa la demora estuve con unos problemitas de salud. El cliente es un nombre pero pudo agregar una columna con código, el rango de las columnas es de A hasta W pero puede incrementarse en el futuro, puse como ej de A hasta G como algo descriptivo
Saludos Luis
Vamos al "turrón". Como escribo en otros post, abre el proyecto VBA, create un módulo e inserta el código siguiente:
Option Explicit
Sub gestionar_click()
On Error Resume Next
'Importante!!!!!!
'cambia la letra de la columna de los id_cliente por la real
'la fila es irrelevante por lo que elige la primera que contenga id_cliente
Const cliente = "A2"
'cambia el números de tallas si fuere necesario
'este caso 4: S, M, L y XL
Const tallas = 4
'Importante!!!!!!
'cambia la letra de la columna de la columna talla S por la real
'la fila, al igual que antes, no importa mucho cual sea
Const talla_S = "E2"
Dim i As Integer, r As Integer, c As Integer
Dim resp As String
Dim opc As Byte
Dim id As Variant, temp As Variant, valor(tallas) As Variant
Application.ScreenUpdating = False
custom:
id = Application.InputBox("Introduzca el ID del cliente a gestionar (Cancelar para salir)")
id = CDbl(id)
If id = False Then
GoTo Final
ElseIf id = "" Then
MsgBox "No ha introducido ningún ID. Vuelva a intentarlo.", vbOKOnly + vbExclamation
GoTo custom
Else:
Range(cliente).Select
r = ActiveCell.Row
c = ActiveCell.Column
i = 0
Do While Cells(r + i, c).Value <> id And Cells(r + i, c).Value <> ""
i = i + 1
Loop
If Cells(r + i, c).Value <> id Then
MsgBox "No existe el ID de cliente " & id & " en el registro. Imposible continuar.", vbOKOnly + vbExclamation
GoTo Final
Else:
resp = MsgBox("ID de cliente encontrado: " & id & vbCrLf & "- Cliente: " & Cells(r + i, c + 1).Value & vbCrLf & "¿Desea continuar?", vbYesNo + vbQuestion)
If resp = vbNo Then
GoTo Final
Else:
'relleno el array con los datos
Range(talla_S).Select
c = ActiveCell.Column - 1
For opc = 1 To tallas
If Cells(r + i, c + opc).Value = "" Then
valor(opc) = "--"
Else:
valor(opc) = Cells(r + i, c + opc)
End If
Next opc
gestión:
'vuelvo a reiniciar opc
opc = 0
opc = Application.InputBox("Introduzca la Talla del cliente a gestionar (Cancelar para salir)" & vbCrLf &
"1.- Talla S" & vbCrLf & "2.- Talla M" & vbCrLf & "3.- Talla L" & vbCrLf & "4.- Talla XL" & vbCrLf & "5.- Salir")
Select Case opc
Case 1
resp = MsgBox("Valor actual de la Talla S del cliente " & id & " es: " & valor(opc) & vbCrLf &
"¿Desea modificar la talla actual?", vbYesNo + vbQuestion)
If resp = vbYes Then
tallaje_S:
temp = Application.InputBox("Introduzca nueva talla (Cancelar para salir)")
temp = CDbl(temp)
If temp = False Then
GoTo Final
ElseIf temp = "" Then
MsgBox "No ha introducido ninguna talla. Vuelva a intentarlo.", vbOKOnly + vbExclamation
GoTo tallaje_S
Else:
Cells(r + i, c + opc).Value = temp
MsgBox "Talla S actualizada a " & temp, vbOKOnly + vbInformation
End If
Else: GoTo Final
End If
Case 2
resp = MsgBox("Valor actual de la Talla M del cliente " & id & " es: " & valor(opc) & vbCrLf & "¿Desea modificar la talla actual?", vbYesNo + vbQuestion)
If resp = vbYes Then
tallaje_M:
temp = Application.InputBox("Introduzca nueva talla (Cancelar para salir)")
temp = CDbl(temp)
If temp = False Then
GoTo Final
ElseIf temp = "" Then
MsgBox "No ha introducido ninguna talla. Vuelva a intentarlo.", vbOKOnly + vbExclamation
GoTo tallaje_M
Else:
Cells(r + i, c + opc).Value = temp
MsgBox "Talla M actualizada a " & temp, vbOKOnly + vbInformation
End If
Else: GoTo Final
End If
Case 3
resp = MsgBox("Valor actual de la Talla L del cliente " & id & " es: " & valor(opc) & vbCrLf &
"¿Desea modificar la talla actual?", vbYesNo + vbQuestion)
If resp = vbYes Then
tallaje_L:
temp = Application.InputBox("Introduzca nueva talla (Cancelar para salir)")
temp = CDbl(temp)
If temp = False Then
GoTo Final
ElseIf temp = "" Then
MsgBox "No ha introducido ninguna talla. Vuelva a intentarlo.", vbOKOnly + vbExclamation
GoTo tallaje_L
Else:
Cells(r + i, c + opc).Value = temp
MsgBox "Talla L actualizada a " & temp, vbOKOnly + vbInformation
End If
Else: GoTo Final
End If
Case 4
resp = MsgBox("Valor actual de la Talla XL del cliente " & id & " es: " & valor(opc) & vbCrLf & "¿Desea modificar la talla actual?", vbYesNo + vbQuestion)
If resp = vbYes Then
tallaje_XL:
temp = Application.InputBox("Introduzca nueva talla (Cancelar para salir)")
temp = CDbl(temp)
If temp = False Then
GoTo Final
ElseIf temp = "" Then
MsgBox "No ha introducido ninguna talla. Vuelva a intentarlo.", vbOKOnly + vbExclamation
GoTo tallaje_XL
Else:
Cells(r + i, c + opc).Value = temp
MsgBox "Talla XL actualizada a " & temp, vbOKOnly + vbInformation
End If
Else: GoTo Final
End If
Case 5
GoTo Final
Case Else
MsgBox "La opción introducida no es correcta. Inténtelo de nuevo", vbOKOnly + vbExclamation
GoTo gestión
End Select
End If
End If
End If
Final:
Application.ScreenUpdating = True
Exit Sub
End Sub
Antes de nada, comentarte que me he creado una columna id_cliente que asocia un número a cada cliente tal y como hemos hablado en post, s anteriores. También reseñar que te leas detenidamente las notas que te he puesto como importante. Por último, y no menos importante, para ejecutar el código, create un botón de formulario o una celda referencia y asignale el sub.
Ya me contarás que tal te funciona.
- Compartir respuesta