スプレッドシートからデータを取り込み、データをチャンクに分割してから、テーブルの "値"バリアントに基づいています。 、スプリットデリミタは「、」に設定する必要がありますが、返される値にカンマが含まれている可能性があります
「HL」、「ヘクラ鉱業会社鉱業株」、「NSM」、12.52,8.69,14.07,6.18
分割ラインのためのコード:データの形式は次のようになり引き込ん値を定義し、次のように列に割り当てることは、現在書かれている:
「CDE」:
Dim Resp As String: Resp = Http.ResponseText
Dim Lines As Variant: Lines = Split(Resp, vbLf)
Dim sLine As String
Dim Values As Variant
For i = 0 To UBound(Lines)
sLine = Lines(i)
If InStr(sLine, ",") > 0 Then
Values = Split(sLine, ",")
W.Cells(i + 2, 2).Value = Replace(Values(1), Chr(34), "")
W.Cells(i + 2, 5).Value = Replace(Values(2), Chr(34), "")
W.Cells(i + 2, 6).Value = Values(3)
W.Cells(i + 2, 7).Value = Values(4)
W.Cells(i + 2, 8).Value = Values(5)
W.Cells(i + 2, 9).Value = Values(6)
W.Cells(i + 2, 10).Value = Values(7)
W.Cells(i + 2, 11).Value = Values(8)
W.Cells(i + 2, 13).Value = Values(9)
End If
問題は線の一部は、このようなことの中にカンマが含まれる名前を返すことで発生しました、 "Coeur Mining、Inc。"、 "NSM"、7.59,16.25,9.52,7.01
これは、値(2)= "Coeur Mining"および値(3)= "Inc." Values(2)= "Coeur Mining、Inc."とは対照的に、そして、値は(3)=「NSM」
私は、次のコードを更新しようとしている:
Dim Resp As String: Resp = Http.ResponseText
Dim Lines As Variant: Lines = Split(Resp, vbLf)
Dim sLine As String
Dim Values As Variant
For i = 0 To UBound(Lines)
sLine = Lines(i)
If InStr(sLine, ",") > 0 Then
***If InStr(sLine, ",Inc.") Then
sLine = Replace(sLine, ",inc.", "")
End If***
Values = Split(sLine, ",")
W.Cells(i + 2, 2).Value = Replace(Values(1), Chr(34), "")
W.Cells(i + 2, 5).Value = Replace(Values(2), Chr(34), "")
W.Cells(i + 2, 6).Value = Values(3)
W.Cells(i + 2, 7).Value = Values(4)
W.Cells(i + 2, 8).Value = Values(5)
W.Cells(i + 2, 9).Value = Values(6)
W.Cells(i + 2, 10).Value = Values(7)
W.Cells(i + 2, 11).Value = Values(8)
W.Cells(i + 2, 13).Value = Values(9)
End If
それは文は株式会社、「探している場合は、ネストされたとしても機能していないと思われるが。 " sLine文字列内。
フォーマットに関する問題はありますか?私も正規表現の関数を使用しようとしましたが、私はExcel/VBAで非常に新しく、正しくフォーマットする方法を理解することができませんでした。
正規表現次のように与えられた示唆されたコード:
Public Function splitLine(line As String) As String()
Dim regex As Object
Set regex = CreateObject("vbscript.regexp")
regex.IgnoreCase = True
regex.Global = True
regex.Pattern = ",(?=([^" & Chr(34) & "]" & Chr(34) & "[^" & Chr(34) & "]" & Chr(34) & ")(?![^" & Chr(34) & "]" & Chr(34) & "))"
splitLine = Split(regex.Replace(line, ";"), ";") End Function
Values = splitLine(sLine)
任意の助けを大幅に高く評価されるであろう、より多くの情報又は実際のコピーは、ファイルを要求に応じて提供することができる優れ。
私は、CSVファイルを読んでいた考えていたが、Iあなたがhttpから情報を得ているのを見てください。どこかのセルに元の文字列を入れてから、テキストを '' 'のテキスト区切り文字でコンマで区切って指定するText to Columnsを使用してください。次にExcelが生成したセルで作業します。 – YowE3K
「Coeur Mining、Inc.」の例では、コンマとIncの間に空白があります。If文ではスペースが省略されています。これはコードの動作を良くするかもしれませんが、非常に一般的な解決策ではありません。法律事務所「Dewy、Cheatem、Howe」をお持ちの場合はどうなりますか?引用符のペアの間にあるコンマを検出する方法が必要です。 –
リッチありがとう、スペースが足りないかもしれないということであなたが正しいかもしれないと信じています。私はちょうどその株式のウェブページを見て、タイトルにスペースがあるように見えます。私はコード行を更新し、それが効果があるかどうかを見てみましょう。名前の中に "、"が付いた唯一の名前に入れた50個のシンボルを見ることができます。しかし、私は同意します。引用符でコンマを探す広範な解決策を見つける方が良いでしょう。残念ながら私は数時間それを試してきましたが、まだ解決策を見つけていません –