VBAを使用してExcelセル内の文字列の単語数を特定する


0

「今日は14ドル、昨日は13ドル」というテキストのセルがあります。
ExcelでVBAを使用して、これを「今日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. 

ただし、これをコードに組み込む方法に固執しています。助けて、スーパーユーザー!


これは、式を使用して行うのは難しくありません。VBAは必要ですか?
バンダースナッチ

数式ソリューションは大丈夫です、はい!
ジェームズジョーダン

回答:


1

変換率のルックアップテーブルを使用する場合、VBAは必要ありません。

VBAを使用する場合、「考えてみて」、最新のコンバージョン率を引き下げることを考えます。または、データの取得元に応じて、特定の日付を使用してそれを行うことができます。

これを通して作業することで、VBAの可能性についての知識も広がります。

特定のWebサイトからの最新のデータを使用する例を次に示しますが、たくさんあります。この場合、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

ここに画像の説明を入力してください


1
また、A2が「20ドル」に変更された場合はどうなりますか?OPは汎用的な再計算方法を探しています。
user1016274

@ user1016274、OPは「ユニバーサルコンバータ」のようなソリューションに指定されていません、彼はテキスト文字列の一部を他のものに置き換えるように頼みました!!
ラジェシュS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.