** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - sustituir valores de celdas según condici
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradosustituir valores de celdas según condici

 Responder Responder
Autor
Mensaje
moctezuma48 Ver desplegable
Nuevo
Nuevo


Unido: 01/Octubre/2010
Estado: Sin conexión
Puntos: 38
Enlace directo a este mensaje Tema: sustituir valores de celdas según condici
    Enviado: 01/Octubre/2010 a las 21:31

¡Hola! A ver si alguien alguien me puede ayudar

Tengo una hoja de excel con 14 filas y 6561 columnas.
los valores de las celdas son 1, 2, 3 y 40
los valores 1, 2 y 3 se repiten consecutivamente por columnas. El valor 40 se puede repetir pero no repetidamente en la misma columna.
 
Lo que necesito es una macro que me vaya sustituyendo los valores 1, 2 y 3 según se vayan repitiendo por columnas. La primera vez que salga el 1 me lo sustituya por 11, la segunda por 12, 13, 14 y 15 respectivamente, el 2 por 21, 22, 23, 24 y 25 y si es el 3 por 31, 32, 33, 34 y 35.
 
Muchas gracias.
 
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5462
Enlace directo a este mensaje Enviado: 01/Octubre/2010 a las 22:10
Lo que debes hacer es:
1.- Definir 3 variables(para el 1, el 2 y el 3).
2.- Anidar dos bucles el exterior para las columnas y el interior para las filas.
3.- Al principio del bucle exterior pones la variables a 11, 21 y 31.
4.- Dentro del bucle interior un bucle Select Case, basado en el valor de la celda, que será el encargado de cambiar los valores y de incrementar las variables.
 
 


Editado por AnSanVal - 01/Octubre/2010 a las 22:18
Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
moctezuma48 Ver desplegable
Nuevo
Nuevo


Unido: 01/Octubre/2010
Estado: Sin conexión
Puntos: 38
Enlace directo a este mensaje Enviado: 04/Octubre/2010 a las 11:08
Muchas gracias por contestarme
 
He estado todo el fin de semana dandole vueltas y al final he conseguido
la siguiente macro, pero lo que no sé es cómo incrementar los contadores. A ver si me puedes ayudar
 
 
-----------------------------------------
 
 
Sub marcarDuplicadosJuntos2()

Application.ScreenUpdating = False
   
    Const celdaInicial = "B2"
    Const celdaFinal = "IRJ15"
   
    Dim miRango As Range
    Dim i As Integer
    Dim j As Integer
    Dim val1 As String
    Dim val2 As String
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
   
    Set miRango = ActiveSheet.Range(celdaInicial & ":" & celdaFinal)
   
    a = 11
    b = 21
    c = 31
   
   
   
    For j = 1 To miRango.Columns.Count
        For i = 1 To miRango.Rows.Count - 1
            val1 = miRango.Cells(i, j).Value2
            val2 = miRango.Cells(i + 1, j).Value2
           
     If val1 = val2 Then
               
                Select Case miRango.Cells(i, j)
                   
                    Case 1, "1" = a
                          
                    Case 2, "2" = b
                   
                    Case 3, "3" = c
                           
                End Select
 
  
       End If
  
        Next i
  
            Next j
  
    'MsgBox "Ya están marcadas las celdas adyacentes"

End Sub

 

Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5462
Enlace directo a este mensaje Enviado: 04/Octubre/2010 a las 15:07
 

Muchas columnas me parecen pero...

... suponiendo tus datos en A1:IRI14, prueba con la macro siguiente:

 
Sub sustituye()

  Dim miFila&, miCol&, uno&, dos&, tres&

  Application.ScreenUpdating = False

  For miCol = 1 To 6561

    uno = 11: dos = 21: tres = 31

    For miFila = 1 To 14

      Select Case Cells(miFila, miCol).Value

        Case 1

          Cells(miFila, miCol).Value = uno

          uno = uno + 1

        Case 2

          Cells(miFila, miCol).Value = dos

          dos = dos + 1

        Case 3

          Cells(miFila, miCol).Value = tres

          tres = tres + 1

      End Select

    Next miFila

  Next miCol

  Application.ScreenUpdating = True

End Sub

 
 


Editado por AnSanVal - 04/Octubre/2010 a las 15:09
Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
moctezuma48 Ver desplegable
Nuevo
Nuevo


Unido: 01/Octubre/2010
Estado: Sin conexión
Puntos: 38
Enlace directo a este mensaje Enviado: 04/Octubre/2010 a las 16:28
Ya lo he probado, pero me cuenta la columna entera, y lo que quiero es que me lo cuente por bloques, por ejemplo:
 
 
1   11
1   11
1   11
2   21
2   21
3   31
3   31
3   31
1   12
1   12
2   22
2   22
3   32
3   32
 
Muchas gracias por tu rápida contestación
 
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5462
Enlace directo a este mensaje Enviado: 04/Octubre/2010 a las 22:34
No es eso lo que pedías aquí...
 
Publicado originalmente por moctezuma48 moctezuma48 escribió:

... La primera vez que salga el 1 me lo sustituya por 11, la segunda por 12, 13, 14 y 15 respectivamente, ...
 
... de ahí la necesidad de que hagáis la consulta con claridad, a ser posible con ejemplos.
 
 
Cambia los respectivos incrementos de las variables, añadiéndoles un condicional. Te pongo el ejemplo para uno = uno + 1:
 
 

If Cells(miFila, miCol).Offset(1).Value <> 1 then   uno = uno + 1

 
 
Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
moctezuma48 Ver desplegable
Nuevo
Nuevo


Unido: 01/Octubre/2010
Estado: Sin conexión
Puntos: 38
Enlace directo a este mensaje Enviado: 05/Octubre/2010 a las 09:15
 Big%20smile   OK. Perfecto 
 
Muchas Gracias por tu paciencia y tu ayuda
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable