У меня есть ячейка с текстом: «Я заработал 14 долларов сегодня и 13 долларов вчера».
Используя VBA в Excel, как мне конвертировать это в «Я заработал 11,33 евро сегодня и 10,52 евро вчера»?

Идея: исходя из того, где в тексте есть пробелы, VBA может:

   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. 

Однако я застрял на том, как поместить это в код. Помогите, Суперпользователи!

2 ответа2

1

Если вы используете справочную таблицу коэффициентов конверсии, VBA не нужна.

Если вы собираетесь использовать VBA, я подумал бы о том, чтобы "придумать это" и снизить самый последний коэффициент конверсии. Или вы можете сделать это, используя конкретную дату, в зависимости от того, откуда вы получаете данные.

Работа через это также расширит ваши знания о возможностях VBA.

Вот пример, который использует самые последние данные с определенного веб-сайта, но их много. Для этого ключ API бесплатный. Вы должны будете подать заявку самостоятельно.

'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

-2

Вы можете попробовать этот код VBA через командную кнопку или как макрос.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .