Excel - Crear hoja a partir de valor de celda

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

Crear hoja a partir de valor de celda

Publicado por Julian (7 intervenciones) el 30/05/2019 19:00:50
Buenas tardes .
En mi lugar de trabajo tenemos una planilla donde vamos volcando unos números que representan en forma abreviada el nombre del equipo a reparar o atender. Ya contamos con un Software dedicado pero esta planilla nos a ayuda para llevar un histórico de intervenciones.
Como se ve en la imagen, colocamos el número en una celda dependiendo del dia y del problema (a la izquierda de la imagen). La idea es que cada vez que se ingresa un número nuevo, genere una hoja y redirija a la misma con el nombre que tiene por número la celda en cuestión. Y cuando el numero se repita, (Pej. en la imagen el 34) abra la hoja creada con anterioridad Pej el 34. es decir que no cree otra si no que redirija ahí directamente. Para que es esto, para evitarnos agregar comentarios para dar una descripción del problema del equipo.
Espero se entienda la consulta. En caso que necesiten más información, con gusto la brindaré
Capturaweb
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 hoja a partir de valor de celda

Publicado por Antoni Masana (2477 intervenciones) el 01/06/2019 12:24:41
Este seria la macro que tienes que poner en la hoja de la imagen.

He delimitado las filas y columnas sobre las que tiene efecto pero puedes ampliarlo o quitarlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Fil As Long, Col As Long, SW As Byte, Nomb As String, _
        Exist As Boolean, a As Integer
 
    Fil = Target.Row
    Col = Target.Column: SW = 0
 
    If Fil >= 3 And Fil <= 22 Then SW = SW + 1 ' --- Control Filas
    If Col >= 2 And Col <= 12 Then SW = SW + 1 ' --- Control Columnas
 
    If SW = 2 Then
       Nomb = Range(Target.Address): Exist = False
 
       For a = 1 To Sheets.Count
           If Sheets(a).Name = Nomb Then Exist = True
       Next
 
       If Not Exist Then
          ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
          Sheets(Sheets.Count).Select
          Sheets(Sheets.Count).Name = Nomb
       End If
       Sheets(Nomb).Select
    End If
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
2
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Crear hoja a partir de valor de celda

Publicado por Julian (7 intervenciones) el 02/06/2019 21:21:58
Hola: Muchas gracias por la respuesta y tomarte el tiempo. Ya logre que funcionara. Excelente. es lo que necesitaba...
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: 15
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Crear hoja a partir de valor de celda

Publicado por Julian (7 intervenciones) el 05/06/2019 22:10:09
Capturaweb1
Estimado: Esto anda genial. Ya lo estamos probando. Una consulta. A la hoja nueva que se abre, hay posibilidad de que tenga el encabezado como el de la imagen, es decir en cada celda de la fila 1 tenga los dias del mes en curso, o de un determinado mes?
Abrazo
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 hoja a partir de valor de celda

Publicado por Antoni Masana (2477 intervenciones) el 05/06/2019 22:27:03
Si pones una Fecha en la celda te pondrá una la fecha en el nombre de la hoja y si la quieres en un formato especial.

1
Nomb = Format(Range(Target.Address), "dd-mmm"): Exist = False

Y si no es esto envíame un fichero de ejemplo y dime que pones y que quieres que salga.

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

Crear hoja a partir de valor de celda

Publicado por Julian (7 intervenciones) el 05/06/2019 23:10:14
Gracias por la pronta respuesta, pero no es eso lo que quiero.

Lo que quiero es cuando se ejecute la macros que me pasasaste, al generar la hoja nueva desde la celda A1 hasta la AE1 esten los dias del mes. 01/06, 02/06 ... 30/06
Y en que lugar del codigo colocarlo.
Estoy muy cargoso?

como en la imagen
Captura2

Abrazo
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 hoja a partir de valor de celda

Publicado por Antoni Masana (2477 intervenciones) el 06/06/2019 08:56:29
Esta es la macro:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Fil As Long, Col As Long, SW As Byte, Nomb As String, _
        Exist As Boolean, a As Integer
 
    Fil = Target.Row
    Col = Target.Column: SW = 0
 
    If Fil >= 2 And Fil <= 22 Then SW = SW + 1 ' --- Control Filas
    If Col >= 1 And Col <= 31 Then SW = SW + 1 ' --- Control Columnas
 
    If SW = 2 Then
       Nomb = Format(Cells(1, Col), "dd-mmm"): Exist = False
 
       For a = 1 To Sheets.Count
           If Sheets(a).Name = Nomb Then Exist = True
       Next
 
       If Not Exist Then
          ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
          Sheets(Sheets.Count).Select
          Sheets(Sheets.Count).Name = Nomb
       End If
       Sheets(Nomb).Select
    End If
End Sub


Adjunto libro ejemplo.

Es la macro solo crea la nueva hoja si escribes desde la fila 2 hasta la 22, pero puedes modificarlo a tu gusto.

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: 15
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Crear hoja a partir de valor de celda

Publicado por Julian (7 intervenciones) el 18/06/2019 22:20:47
Estimado: Agradezco nuevamente su predisposición. Lo hemos probado y funciona muy bien. Pero a mi jefe no le gusto y me propuso lo siguiente:
Al momento de ingresar los datos, que esta redirija a una unica hoja y que coloque en una columna "La Fecha (4-06/2019)" , en una cela contigua el dato de la celda (En el ejemplo el 22) y en la celda contigua a esta ultima , El Problema (CONTADOR PTADAS.)
Los datos de Problema surgirian de la interseccion,
Range("F6:F28,9:9").Select

Lo grabé con el grabador de macros
El dato de la fecha
Range("T:T,S4:V5,T9").Select

Saludos e intente ser lo mas claro posible

Abrazo


357-interseccion-1
357-interseccion-2
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: 15
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Crear hoja a partir de valor de celda

Publicado por Julian (7 intervenciones) el 06/07/2019 03:21:19
Hola Estimado: Ah encontrado usted una ayuda...
Yo lo estoy intentando pero no lo logro

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Private Sub Worksheet_Change(ByVal Target As Range)
 
 
 
    Dim Fil As Long
    Dim Col As Long
    Dim SW As Byte
    Dim Nomb As String
    Dim Exist As Boolean
    Dim a As Integer
    Dim Intersec As Range
    Dim MiRango As Range
    Dim Problemas As Range
    Set Problemas = Range("F6:F28")
    Set Intersec = Range(Target.Address)
 
 
 
    Fil = Target.Row
    Col = Target.Column: SW = 0
 
    If Fil >= 6 And Fil <= 28 Then SW = SW + 1 ' --- Control Filas
    If Col >= 7 And Col <= 130 Then SW = SW + 1 ' --- Control Columnas
 
    If SW = 2 Then
    Set MiRango = Application.Intersect(Intersec, Problemas)
 
      If Not MiRango Is Nothing Then
      MsgBox ("por aca no?")
        Else
         MsgBox ("por aca si?")
 
       Nomb = Range(Target.Address): Exist = False
 
       For a = 1 To Sheets.Count
           If Sheets(a).Name = Nomb Then Exist = True
       Next
       'MsgBox (a & " " & " " & " " & SW & " " & " " & Nomb & " " & Exist & "   " & Target.Row)
       If Not Exist Then
 
        ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
        Sheets(Sheets.Count).Select
        Sheets(Sheets.Count).Name = Nomb
        ActiveSheet.Select
        ActiveCell(1, 1).Select
        ActiveCell.Value = "Acciones de maquina: cos - 0" & Nomb
        ActiveCell(2, 1).Select
        ActiveCell.Value = " "
        ActiveCell.Value = MiRango
 
 
 
 
           End If
 
 
        Sheets(Nomb).Select
        ActiveSheet.Select
        ActiveSheet.Cells(1, 1).Select
         ActiveSheet.Range("A:A").Select
    Selection.NumberFormat = "dd-mmm-yy"
        ActiveCell(1, 1).End(xlDown).Offset(1, 0).Select
 
          ActiveCell.Value = MiRango
 
 
 
 
    End If
 
    End If
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
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 hoja a partir de valor de celda

Publicado por Antoni Masana (2477 intervenciones) el 06/07/2019 11:47:44
Tal y como presentas el código es algo caótico de leer.
Por lo que lo he arreglado un poco. Ahora necesito saber exactamente que deseas hacer y en que falla el código.
Y como la macro depende de los datos de un libro tendrías que subir un ejemplo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Fil As Long, Col As Long, SW As Bytem Nomb As String, _
        Exist As Boolean, a As Integer, Intersec As Range, MiRango As Range, _
        Problemas As Range
 
    Set Problemas = Range("F6:F28")
    Set Intersec = Range(Target.Address)
 
    Fil = Target.Row
    Col = Target.Column: SW = 0
 
    If Fil >= 6 And Fil <= 28 Then SW = SW + 1 ' --- Control Filas
    If Col >= 7 And Col <= 130 Then SW = SW + 1 ' --- Control Columnas
 
    If SW = 2 Then
        Set MiRango = Application.Intersect(Intersec, Problemas)
        If Not MiRango Is Nothing Then
            MsgBox ("por aca no?")
        Else
            MsgBox ("por aca si?")
            Nomb = Range(Target.Address): Exist = False
            For a = 1 To Sheets.Count
               If Sheets(a).Name = Nomb Then Exist = True
            Next
      ' --- MsgBox (a & "   " & SW & "  " & Nomb & " " & Exist & "   " & _
                   Target.Row)
            If Not Exist Then
                ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
                Sheets(Sheets.Count).Select
                Sheets(Sheets.Count).Name = Nomb
                ActiveSheet.Select
                ActiveCell(1, 1).Select
                ActiveCell.Value = "Acciones de maquina: cos - 0" & Nomb
                ActiveCell(2, 1).Select
                ActiveCell.Value = " "
                ActiveCell.Value = MiRango
            End If
 
            Sheets(Nomb).Select
            ActiveSheet.Select
            ActiveSheet.Cells(1, 1).Select
            ActiveSheet.Range("A:A").Select
            Selection.NumberFormat = "dd-mmm-yy"
            ActiveCell(1, 1).End(xlDown).Offset(1, 0).Select
            ActiveCell.Value = MiRango
        End If
    End If
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