Excel - Verificacion de un valor

 
Vista:
Imágen de perfil de Jorge

Verificacion de un valor

Publicado por Jorge (39 intervenciones) el 16/11/2021 05:52:15
Hola buenas noches hace ya mucho que no me daba una vuelta, un cordial saludos para todos. Vuelvo aqui con mi base de datos de expedientes después de tanto tiempo y es que ahora necesitó hacer algunas actualizaciones en el sistema.

Tengo información que se categoriza por su valor y cada valor tiene un número de expediente en secuencia por su categoria para aclarar un poco mejor, ejemplo con ciudades:

BARCELONA --> 001-21
MADRID --> 001-21
PARIS --> 001-21

Haciendo ejemplo, cada ciudad lleva su número de expediente (una secuencia) y bueno en el sistema por hacerlo complejo se escribe de forma manual (también se puede hacer de forma automática pero de preferencia por el ambito de trabajo se hace manual así que la dinámica prevalece), lo que pasa es que de vez en cuando los números por equivocación humana pueden llegar a repetirse.

Que código utilizaria para que al momento de que en el campo número al establecer la numeración del expediente, que detecte por la ciudad si dicho número que se esta introduciendo ya se esta usando.

En el intento estaba analizando este código a ver si de allí podía sacar algo pero está un poco complicado (dicho código es el que uso para filtrar las unidades (lo que hago ejemplo a ciudades) y observar las numeraciones en un listbox):

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
Private Sub btn_buscar_Click(): On Error Resume Next
ListBox1.Clear
Dim arrListOrd As Object
Dim x, dato
 
Set arrListOrd = CreateObject("System.Collections.ArrayList")
 
With Hoja1
   For x = 2 To .UsedRange.Rows.Count
      If .Range("E" & x) = unidad Then
         If .Range("Y" & x) <> "" Then
            arrListOrd.Add CStr(.Range("X" & x) & " " & .Range("Y" & x))
         End If
      End If
   Next
 
   arrListOrd.Sort
   arrListOrd.Reverse
 
End With
 
For Each dato In arrListOrd
   ListBox1.AddItem dato
Next
 
End Sub
Next

Antemano muchas gracias por la ayuda que puedan prestarme
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

Verificacion de un valor

Publicado por Antoni Masana (1945 intervenciones) el 16/11/2021 15:16:32
Puedes utilizar esta macro que se ejecuta cada vez que modificas una celda ( existe una en cada hoja )

1
Private Sub Worksheet_Change(ByVal Target As Range)

Lo que debe hacer es que cuando este en la columna de numeración no existe en la columna otro número igual, y no compararse con sigo misma.

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 Jorge

Verificacion de un valor

Publicado por Jorge (39 intervenciones) el 16/11/2021 15:50:37
Profesor como tal puedo utilizar ese mismo bloque de código, pero sin usar el listbox porque como tal la comparación (osea el bloque de código) lo haría el campo donde escribo el número y susplantando estas últimas líneas de código:

1
2
3
4
5
6
7
8
arrListOrd.Sort
   arrListOrd.Reverse
 
End With
 
For Each dato In arrListOrd
   ListBox1.AddItem dato
Next

Por ejemplo, con un mensaje que diga:

"Está numeración ya se encuentra asignada a otro informe"
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 Jorge

Verificacion de un valor

Publicado por Jorge (39 intervenciones) el 16/11/2021 18:56:08
Bueno creo que ya resolví la duda, dejo el código para que lo observen y si habría alguna forma de que se genere con mayor rendimiento estaria agradecido que me dijeran... feliz tarde.

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
'
'Verifica si existe el número que se escribe
'ya asignado en otro informe
Private Sub nro_orden_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 
    Dim arrListOrd As Object
    Dim x, dato
 
    Set arrListOrd = CreateObject("System.Collections.ArrayList")
 
    With Hoja1
       For x = 2 To .UsedRange.Rows.Count
          If .Range("E" & x) = unidad Then
             If .Range("Y" & x) = nro_orden Then
                arrListOrd.Add CStr(.Range("Y" & x))
             End If
          End If
       Next
 
    End With
 
    For Each dato In arrListOrd
       MsgBox "El número " & nomenclatura & " " & dato & " ya se encuentra en uso", vbCritical, "DATAPAD 3.3"
       nro_orden = ""
       nro_orden.SetFocus
    Next
 
End Sub
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