Ayuda con formula

01/02/2004 - 01:13 por Daniel S.L. | Informe spam
Hola a todos..

Hace unos dias el buen amigo Héctor me envió el siguiente código

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If StrConv(Sh.Name, vbLowerCase) = "BDATOS" Then Exit Sub
If Intersect(Target, Sh.Range("a12:a3000")) Is Nothing Then Exit Sub
With Target
If .Value <> "" Then
.Offset(, 4).Formula = "=VLookUp(" & .Offset(, 2).Address(0, 0) &
",BDatos!c2:g3000,3)"
.Offset(, 6).Formula = "=VLookUp(" & .Offset(, 2).Address(0, 0) &
",BDatos!c2:g3000,5)"

Else
.Offset(, 4).ClearContents
.Offset(, 6).ClearContents
End If
End With
End Sub

y traducido en una formula de excel da lo siguiente:

=BUSCARV(C15,BDATOS!C2:G3000,3)
=BUSCARV(C15,BDATOS!C2:G3000,5)

pero a qui es donde esta el problemas eso creo...

la formula que realmente quiero que salga es la siguiente:
=SI($A15<>"",BUSCARV($C15,BDATOS!$C$2:H3000,3,0),"")
=SI($A15<>"",BUSCARV($C15,BDATOS!$C$2:H3000,5,0),"")

NO se porque con a primera no busca bien el articulo y con la ultima si lo saca
sin problemas. Espero y alguien me de otra manita
Gracias.

Un saludo,
Daniel.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
01/02/2004 - 04:38 | Informe spam
hola, Daniel !

Mostrar la cita
'dejando de lado' [un poquito y por ahora] lo referente a las referencias [semi-]absolutas/relativas
[o sea, cuando usar p.e. $A$1 ... o $A$1 ... o A$1 ... o A1]
y 'convirtiendo' la formula que SI funciona a 'totalmente relativa'
podras 'ver' la diferencia con la formula que 'deja' el codigo [p.e.]
'manual' => BUSCARV(C15,BDATOS!C2:H3000,3,0)
× codigo => BUSCARV(C15,BDATOS!C2:G3000,3)

1.- la 'principal' diferencia es el ultimo argumento de la funcion BuscarV =>en CERO -o 'falso'-< lo que significa que la base de datos NO esta 'ordenada' [y que yo 'omiti' -por error- :((
=>agrega una coma y un cero [en el codigo] 'entre' la columna a devolver y el parentesis 'de cierre'<2.- 'otra' diferencia [de momento NO 'crucial'] es que la formula 'manual' busca en el rango de columnas 'C:H'
y la que 'deja' la macro busca en el rango de columnas 'C:G'
es como si fueras a ocupar [en algun momento] 'devlover' HASTA 6 columnas a la derecha desde 'C'
[si no recuerdo mal, 'originalmente'... 'eran' las columnas 'A:F']

=> otro cambio 'importante' que veo en las 'adecuaciones' que hiciste al codigo 'propuesto' es...
la primer instruccion dentro del codigo del evento:
Mostrar la cita
==> estas comparando 'minusculas' CONTRA 'mayusculas' <= o... cambias vbLowerCase a => vbUpperCase
o... cambias "BDATOS" a => "bdatos"
o... [de lo contrario] la macro 'se aplicara' INCLUSIVE a cambios en el rango "a12:a3000" de la hoja 'BDATOS' :((

[finalmente]
la condicionante en la formula 'manual' =>=SI($A15<>"" ... ,"")<la esta 'ejecutando' [por 'descalificacion'] la macro con la instruccion:
Mostrar la cita
¿comentas?
saludos,
hector.
#2 Daniel S.L.
03/02/2004 - 02:49 | Informe spam
Hola Héctor !

Gracias por responder, te comento como esta la situación.

Mostrar la cita
el rango de columnas 'C:H'
Mostrar la cita
la derecha desde 'C'
Mostrar la cita
En esta parte efectivamente el rango era originalmente de 'A:F' , pero tuve que mover
el rango a 'C:H' el por que, es que hace unos dias muy amablemnte me diste este
codigo:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
With Target
Select Case .Column
Case 1: If .Value <> "" Then .Offset(, 1) = Now Else .Offset(, 1).ClearContents
Case 11: If .Value <> "" Then .Offset(, 6) = Now Else .Offset(,
6).ClearContents
Case 12: If .Value <> "" Then .Offset(, 4) = Now Else .Offset(,
4).ClearContents
End Select
End With
End Sub

y bueno esto aplica a todas las hojas, por esa razón ya no te quise molestar y para
que no aplicara a la hoja llamada BDATOS me vi forzado en mover un poquito las
referencias. para que la hoja llamada BDATOS no se afectara ya que mis datos
originalmente estaban apartir de la columna A-B-C ya que cuando escribia un articulo
en la columna a me botaba la fecha en columna b y como no se como midificar tu
formula-codigo- pues se me hizo mas facil mover mis dados hacia la columna C-D-E-F-G.

Mostrar la cita
'propuesto' es...
Mostrar la cita
"a12:a3000" de la hoja 'BDATOS' :((

Por este lado te comento de que se me paso decirte de que la hoja tiene el nombre
BDATOS, nose si eso efecte en algo..?

Mostrar la cita
Y por este ultimo dato que me observas tedoy las gracias pór esplicare ya que apenas
estoy aprendiendo o trato de prendes de mis maestros como lo son todos ustedes los
del foro...gracias!!

Mostrar la cita
Disculpa por no atnder luego este mensaje no me fue posible concetarme hasta ahorita
y gracias por tu fina atencion:

Un saludo,
Daniel.
#3 Héctor Miguel
03/02/2004 - 05:20 | Informe spam
hola, Daniel !

Mostrar la cita
la 'razon' por la que se 'afecta' [inclusive] a la hoja 'BDATOS'... [que te comente en el mensaje anterior] es la siguiente:
=> 'comparar' textos [en vba], por 'omision'... 'distingue' entre mayusculas y minusculas <para estar 'seguros' de una comparacion 'exacta', es necesario 'igualar' los textos 'a comparar'
[p.e.] los nombres de las hojas [en sus 'pestañas'] podrian ser mayusculas y/o minusculas
y... si estas [o no] seguro de que el usuario pudo haberlo 'modificado'... puedes 'igualar' para 'compar'...
usando la instruccion 'StrConv(Variable, 'Tipo_de_escritura') =>que te 'propuse' para el caso< si el nombre de la hoja es: 'BDATOS' o... 'BDatos' o... 'bDatos' o... [...]
la funcion 'StrConv(Sh.Name, vbLowerCase)' estaria 'devolviendo' el nombre [cualquiera-sea] en minusculas
'con lo cual' YA seria 'posible' hacer una comparacion 'exacta' versus la cadena "en_minusculas"
... 'pero' ... NO seria 'posible' hacer una comparacion 'exacta' versus la cadena "EN_MAYUSCULAS"
nota: [a menos que al inicio del modulo, en el area de las declaraciones pongas la instruccion 'Option Compare Text']

lo que te habia comentado al respecto en el mensaje anterior es:
Mostrar la cita
a lo que [me permito], agregare la nota de este mensaje:
=> al inicio del modulo, en el area de las declaraciones pon la instruccion 'Option Compare Text' < [suponiendo que NO 'requires' hacer una 'distincion' entre mayusculas y minusculas -como en casos de contraseñas-]
[lo que 'al parecer'... -segun otro mensaje-... vas a 'necesitar' en un momento dado] ;)

saludos,
hector.
#4 Daniel S.L.
03/02/2004 - 16:38 | Informe spam
ok Héctor Miguel

Mostrar la cita
momento dado] ;)
Mostrar la cita
así parece te agradezco tu valioso tiempo...Gracias

Un saludo,
Daniel.
Ads by Google
Search Busqueda sugerida