Mi código VB de Excel no arroja ningún resultado

Bueno ya no te quiero molestar + . Has sido super amable conmigo pero esta vez el código VB no reacciona, realmente no arroga ningún resultado. Ademas no me da a elegir donde esta el valor y donde puedo situar el resultado
Habrá alguna forma de mejorar esta fórmula
=IZQUIERDA(DERECHA(A3;5);3)*(1+0,075) para que me permita extrar mas de 3 digitos...ej Tensión Nominal: 12000 V
o esta otra formula
=EXTRAE(A3,17,3)*(1+0.075)
También tiene el mismo detalle solo me permite extraer 3 dígitos, con 220,380,9999 volts funciona, pero si tengo el rango en 12000 V no me funciona ... Alguna forma de extraer el valor numérico entre eso dos espacios
ej Tensión nominal: " " V
Gracias de todas formas tus respuestas me han ayudado mucho, por ahora tendré que limitar la variante hasta 4 dígitos, pero si puedes seguir ayudándome.con este problem

1 respuesta

Respuesta
1
Parece que no doy en el clavo, no te preocupes esto lo arreglamos antes o después.
Por partes:
Para realizarlo de forma que se realice con fórmula te aconsejo poner una condicional respecto a la longitud del dato, en este caso cuando la longitud tiene 21 o menos caracteres (de 100 a 999 V)detecta el valor y si tiene más de 21 caracteres (de 1000 a 9999 V) lo detecta de otra forma:
=+SI(LARGO(A3)<=21;IZQUIERDA(DERECHA(A3;5);3)*(1+0,075);IZQUIERDA(DERECHA(A3;6);4)*(1+0,075))
Si tienes altos voltajes puedes anidar condicionales.
No obstante sigo con la idea de la macro, prueba esta a ver como funciona:
Option Compare Text
Sub Tension()
On Error Resume Next
Set Origen = Application.InputBox("Seleccione las celdas que tienen a modificar", "Seleccion Rango", , , , , , 8)
If IsEmpty(Origen) = True Then
End
End If
Set Destino = Application.InputBox("Seleccione columna destino", "Destino", , , , , , 8)
If IsEmpty(Destino) = True Then
End
End If
Rango = Origen.Address
Repo = Origen.Column
Desplazamiento = Destino.Column - Repo
Set Rango = Range(Rango)
For Each cell In Rango
If InStr(cell.Value, "tension") Then
Paco = cell.Value
Tono = Replace(Paco, "Tension nominal:", "")
Tono = Trim(Replace(Tono, "V", ""))
cell.Offset(0, Desplazamiento).Value = Tono * (1 + 0.075)
End If
Next
End Sub
Ojo: selecciona siempre más de una celda y siempre en la misma columna (Tanto al seleccionar el origen como el destino)sino cascará.
Te agradezco tu preocupación por mi tiempo, pero no me molestas, es un placer poder ayudarte.
Comentame si te ha solucionado el problema tanto la macro como la fórmula, ando un poco picadillo con este tema.
CODAM PLUS Potencia
MEMOBOX 304 Memobox Primera
Código de medición:
Periodo de medición: 5 minutos
Tensión nominal: 220 V
Tensión: 230 V Factor de Corrección: 1
Corriente: 1500 A Factor de Corrección: 1
Fecha y hora: 12/11/02 10:50:00 a.m. - 13/11/02 11:40:11 a.m.
Esta es una parte del archivo en excel... vez en A5 siempre esta Tensión Nominal 220 V... ese 220 v, puede ser 380, 440, 12000.. y ese valor lo necesito multiplicar por su 7.5% en la celda 026
Tengo una Macros. Donde me hace varios procesos y entre ellos tiene que estar este que estamos dicutiendo.
pd:el ultimo código no me actualiza los datos.. queda grabado el valor de la tensión.
Pensaba que realmente importabas un fichero y que tenias todos los datos en una columna es decir debías hacer el proceso en todas las celdas de una columna. Si al importar los datos lo único que te interesa es capturar el valor de la celda A5 prueba el siguiente código, funciona independientemente del voltaje de 1 voltio a oo, a su vez el dato que obtiene lo multiplica por 0.75% y lo muestra en la celda o26: este es el código:
Sub Tension()
Eco = ActiveSheet.Range("a5").Value
Paco = Len(Eco)
X = Paco - 22
Tepo = Right(Eco, 5 + X)
Tapo = Left(Tepo, 3 + X)
Range("O26").Value = Tapo * 0.075
End Sub
Espero que te sirva esta vez, la primera instrucción es por si se ejecuta y no existe en la celda A5 un dato numérico y no muestra mensaje de error sino que se ejecuta sin funcionar.
Comentame si te ha solucionado el problema ando un poco más picadillo con este tema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas