Excel - Crear tabla

 
Vista:
sin imagen de perfil
Val: 28
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Crear tabla

Publicado por cristino (13 intervenciones) el 07/12/2020 13:46:28
Buenas, quisiera ayuda para crear un macro que convierta una hoja en una tabla, pero que los datos del Rango los cogiera automáticamente en función de la ultima columna y fila con datos.

son esos datos de rango que no consigo poner en la formula para que funcione y los tengo que cambiar manualmente

Por si puede ayudar la ultima columna siempre es la misma "E", lo que cambia es la fila

Este es el macro que utilizo, pero cambiando los datos del rango.

1
2
3
4
5
6
Sub tabla()
    Sheets("Hoja1").Select
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$E$10"), , xlYes).Name = _
        "Tabla1"
    Range("Tabla2[#All]").Select
End Sub

Gracias anticipadas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Crear tabla

Publicado por Antoni Masana (2477 intervenciones) el 10/12/2020 12:35:04
No tengo muy claro lo que haces pero si entiendo bien lo que buscas es esto:

1
2
3
4
5
6
7
8
9
10
Sub tabla()
    Dim Fila as Long
    Fila=1
    While Cells(Fila, "A") <> ""
        Fila = Fila + 1
    Wend
    Sheets("Hoja1").Select
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$E$" & Fila), , xlYes).Name = "Tabla1"
    Range("Tabla2[#All]").Select
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 28
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Crear tabla

Publicado por cristino (13 intervenciones) el 14/12/2020 14:14:23
Gracias de nuevo por tu ayuda.

Estoy intentando colocar una formula en una variable directamente, sin tener que ponerla en una celda, coger el valor y borrar la celda, creo que aunque funciona es una chapuza y seguro que hay mejor forma de hacerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Crear tabla

Publicado por Antoni Masana (2477 intervenciones) el 15/12/2020 08:33:12
Si crees que lo que intentas es una chapuza puedes intentar algo mejor.
Como no se cómo es tu libro ni me puedo hacer una idea de lo que haces lo mejor es subir un libro y explicar que quieres y te podremos sugerir algo mejor u otra forma de hacerlo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 28
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Crear tabla

Publicado por cristino (13 intervenciones) el 17/12/2020 12:18:22
La he publicado en el foro, pero me puedes ayudar con este error

estoy en la hoja1 y en la hoja2 hay una tabla (tabla1), un for recorre la hoja1 columna (R) y la compara con la columna(B), si los datos coinciden debe escribir en la hoja2(tabla1 fila (valor i) columna (B), pero da: Error definido por la aplicación o el objeto
1
2
3
If Cells(i, 18) = 4 And Cells(i, 2) = "BOLA" Then
     ActiveCell(tabla1).Range(i, 4).FormulaR1C1 = "D"
     ActiveCell(tabla1).Range(i + 1, 4).FormulaR1C1 = "
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Crear tabla

Publicado por Antoni Masana (2477 intervenciones) el 17/12/2020 13:13:00
No veo la tabla, estará en otra pregunta del foro o en otro apartado del foro.

1
2
3
If Cells(i, 18) = 4 And Cells(i, 2) = "BOLA" Then
    ActiveCell(tabla1).Range(i, 4).FormulaR1C1 = "D"
    ActiveCell(tabla1).Range(i + 1, 4).FormulaR1C1 = "

Para valorar este código me faltan datos, o mejor dicho parte del código.
No se en cual de las tres líneas te da el error.

En la segunda veo varios fallos:

ActiveCell - Hace referencia a celdas y no a hojas
tabla1 - ¿Esto que es?, ¿Una variable?, el nombre de la hoja va entre comillas.
FormulaR1C1 - Esto es para asignar formulas y no valores.
"D" - Esto es un valor y no una formula.

En la tercera veo varios fallos, además de los mismos de la anterior

¿Qué significa una sola comilla?
¿No se deben de abrir i cerrar?
¿Done hace referencia a la columna B?

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 28
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Crear tabla

Publicado por cristino (13 intervenciones) el 17/12/2020 13:55:01
una hoja llamada "Datos"
otra hoja llamada "Hoja1" que contiene una tabla llamada "Tabla1"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sheets("Datos").Select        ' hoja activa
For i = 1 To 30
      If Cells(i, 18) = 4 And Cells(i, 2) = "BOLA" Then           ' mira en la (R1) si es 4 y ademas en la (B1) sies "BOLA" de la hoja activa(Datos)
        ActiveCell(Tabla1).Range(i, 4).FormulaR1C1 = "D"  'tiene que escribir en la (Tabla1 de la Hoja1)  en la celda i (valor del for) columna D
la letra "D"
        ActiveCell(Tabla1).Range(i + 1, 4).FormulaR1C1 = "I"       ' lo mismo que la anterior pero una fila mas la letra "I"
        ActiveCell(Tabla1).Range(i + 2, 4).FormulaR1C1 = "D"      ' lo mismo pero una fila mas la letra "D"
        ActiveCell(Tabla1).Range(i + 3, 4).FormulaR1C1 = "I"       ' lo mismo pero una fila mas la letra "I"
         i = i + 3                                                                               ' suma 3 posiciones al for
    ElseIf Cells(i, 18) = 6 And Cells(i, 2) = "BOLA" Then
         ActiveCell(Tabla1).Range(i , 4).FormulaR1C1 = "D"
         ActiveCell(Tabla1).Range(i + 1, 4).FormulaR1C1 = "I"
         ActiveCell(Tabla1).Range(i + 2, 4).FormulaR1C1 = "D"
         ActiveCell(Tabla1).Range(i + 3, 4).FormulaR1C1 = "D"
         i = i + 3
    End If
Next

El error lo da nada mas pasar la instrucción IF que la desvía bien según los datos y lo que no hace bien es ActiveCell(Tabla1).........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Crear tabla

Publicado por Antoni Masana (2477 intervenciones) el 17/12/2020 19:37:52
Prueba si esto funciona

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Macro()
    Sheets("Datos").Select
    For i = 1 To 30
        If Cells(i, "B") = "BOLA" Then
             If Cells(i, 18) = 4 Then
                 With Sheets("Hoja1")
                     .Cells(i + 0, 4) = "D"
                     .Cells(i + 1, 4) = "I"
                     .Cells(i + 2, 4) = "D"
                     .Cells(i + 3, 4) = "I"
                 End With
                 i = i + 3
             ElseIf Cells(i, 18) = 6 Then
                 With Sheets("Hoja1")
                    .Cells(i + 0, 4) = "D"
                    .Cells(i + 1, 4) = "I"
                    .Cells(i + 2, 4) = "D"
                    .Cells(i + 3, 4) = "D"
                 End With
                 i = i + 3
             End If
        End If
    Next
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 28
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Crear tabla

Publicado por cristino (13 intervenciones) el 20/12/2020 02:42:23
Gracias Antonio, funcionan tanto el tuyo como el que alfinal me salio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
For i = 2 To 30
        If Cells(i, 16) = 4 And Cells(i, 2) = "BOLA" Then
             Worksheets("Hoja1").Range("D" & i).Value = "D"
             Worksheets("Hoja1").Range("D" & i + 1).Value = "I"
             Worksheets("Hoja1").Range("D" & i + 2).Value = "D"
             Worksheets("Hoja1").Range("D" & i + 3).Value = "I"
             i = i + 4
         ElseIf Cells(i, 16) = 6 And Cells(i, 2) = "BOLA" Then
             Worksheets("Hoja1").Range("D" & i).Value = "D"
             Worksheets("Hoja1").Range("D" & i + 1).Value = "I"
             Worksheets("Hoja1").Range("D" & i + 2).Value = "D"
             Worksheets("Hoja1").Range("D" & i + 3).Value = "I"
             Worksheets("Hoja1").Range("D" & i + 4).Value = "D"
             Worksheets("Hoja1").Range("D" & i + 5).Value = "D"
             i = i + 5
         End dif
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar