Identifique o número de strings do Word na célula do Excel com o VBA

0

Eu tenho uma cela com o texto - 'Fiz 14 dólares hoje e 13 dólares ontem'.
Usando o VBA no Excel, como faço para converter isso para 'Eu fiz 11,33 euros hoje e 10,52 euros ontem'?

Idéia: Com base em onde os espaços estão no texto, o VBA poderia:

   a) identify the word order of each word within the cell [ex. '14' is word 
      3, 'dollars' is word 4] 
   b) identify whether the following word was 'dollars' and 
   c) if so, multiply the previous word times the conversion factor of .81. 

Estou preso em como colocar isso no código, no entanto. Ajuda, Superusuários!

    
por James Jordan 25.03.2018 / 01:50

2 respostas

1

Se você usar uma tabela de pesquisa de taxas de conversão, não há necessidade de VBA.

Se você for usar o VBA, meu pensamento seria "imaginar" e reduzir a taxa de conversão mais recente. Ou você pode fazer isso usando uma data específica, dependendo de onde você obtiver seus dados.

Trabalhar com isso também expandirá seu conhecimento sobre as possibilidades do VBA.

Aqui está um exemplo que usa os dados mais recentes de um determinado site, mas há muitos por aí. Para este, a chave da API é gratuita. Você terá que se candidatar.

'Set reference to Microsoft winHTTP Services 5.0
'You'll need to install a JSON converter, or perhaps parse the csv output
'You could also parse this simple JSON using Regular Expressions
Option Explicit
Option Compare Text
Function ConvertInText(S As String) As String
    Dim V As Variant, W As Variant
    Dim DT As Date
    Dim I As Long

V = Split(S, " ")
For I = 0 To UBound(V)
    If V(I) = "Dollars" Then
        V(I) = "Euros"
        V(I - 1) = Format(USDtoEUR(CCur(V(I - 1))), "0.00")
    End If
Next I

ConvertInText = Join(V)
End Function

Private Function USDtoEUR(DOL As Currency) As Currency
    Const myAPI As String = "apikey=xxxxxxxxxxxxx"
    Const sURL As String = "https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=USD&to_currency=EUR&"
    Dim httpRequest As WinHttpRequest
    Dim strJSON As String, JSON As Object

Set httpRequest = New WinHttpRequest
With httpRequest
    .Open "Get", sURL & myAPI
    .Send
    .WaitForResponse
    strJSON = .ResponseText
End With
Set httpRequest = Nothing

Set JSON = parsejson(strJSON)

USDtoEUR = JSON("Realtime Currency Exchange Rate")("5. Exchange Rate") * DOL

End Function

    
por 25.03.2018 / 14:10
-2

Você pode tentar este código VBA através de um botão de comando ou como Macro.

Private Sub CommandButton1_Click()

i = 8

str1 = Range("A2").Value

str1 = Mid(str1, 1, i - 1) & Replace(str1, "14 dollars today and 13 dollars", "11.33 euros today and 10.52 euros", Start:=i)

Range("A4").Value = str1


End Sub

    
por 25.03.2018 / 11:17