ฉันจะใส่ข้อมูล VBA Query Tables ในหนึ่งคอลัมน์ได้อย่างไร


1

ป้อนคำอธิบายรูปภาพที่นี่

โปรดช่วยฉันใช้รหัสด้านล่าง ฉันต้องการเพียงข้อมูลที่จะเข้าไปในคอลัมน์ N เมื่อใช้สำหรับลูปมันจะข้ามทุกคอลัมน์ ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

 Dim W As Worksheet: Set W = ActiveSheet
Last = W.Range("A1500").End(xlUp).Row
If Last = 7 Then Exit Sub
Dim Symbols As String
Dim i As Integer
Dim j As Integer

' Code below Loops on the stock tickers and concatenate them
For i = 8 To Last Step 200
    Symbols = "" 'value to reset the string during loop

    For j = i To i + 199
        Symbols = Symbols & W.Cells(j, 1) & "+"
    Next j

        Symbols = Left(Symbols, Len(Symbols) - 1)

        'Debug.Print Symbols ' delete this later

  Dim URL As String: URL = "http://finance.yahoo.com/d/quotes.csv?s=" & Symbols & "&f=snl1p2kjr5rp6s7m3m8"

         With ActiveSheet.QueryTables.Add(Connection:="URL;" & URL, Destination:=W.Range("$N$" & i))
            .BackgroundQuery = True
            .TablesOnlyFromHTML = True
            .Refresh BackgroundQuery:=False
            .FillAdjacentFormulas = False
            .SaveData = True
        End With

Next i

I only need the data to go into column N, when using the for loop, it goes across all the rows... นั่นหมายความว่าอย่างไร? ถ้าคุณต้องการให้มันทั้งหมดไปที่ N คุณหมายถึงคุณต้องการมันทั้งหมดใน N1 ถ้าไม่เช่นนั้นจะต้องไปยังแถวต่างๆใน N
Dave

มันจะข้ามคอลัมน์ทั้งหมดแทนเฉพาะในคอลัมน์ N ทุกรอบของการวนซ้ำสำหรับการวางข้อมูลในคอลัมน์ที่อยู่ติดกัน แต่ในแถวที่ถูกต้องตามที่แสดงในภาพ
farai

ฉันเห็นการอัปเดตของคุณตอนนี้คำถามของคุณชัดเจนแล้ว
เดฟ

คำตอบ:


1

ดูเหมือนว่าปัญหานี้เกิดจากข้อเท็จจริงที่ว่าการเพิ่มใหม่QueryTableจะเพิ่มQueryTableคอลัมน์หนึ่งคอลัมน์ที่เพิ่มไปทางขวาก่อนหน้านี้

ที่สามารถยกเลิกได้โดยการเพิ่มรหัสต่อไปนี้ทันทีหลังจากEnd Withคำสั่ง สำหรับแต่ละรายการใหม่QueryTableหลังจากคอลัมน์แรกสิ่งนี้จะลบคอลัมน์เดียวของเซลล์ทางด้านซ้ายของรายการที่เพิ่มก่อนหน้านี้QueryTableดังนั้นจึงจัดแนวใหม่ในแนวนอน

If i <> 8 Then
    Range("N8", W.Range("$N$" & i).Offset(-1)).Delete (xlShiftToLeft)
End If

ดีใจที่ได้บริการ ถ้าคำตอบของฉันได้รับการแก้ไขปัญหาของคุณได้โปรดยอมรับมัน เมื่อคุณมีชื่อเสียงเพียงพอคุณสามารถโหวตคำตอบที่เป็นประโยชน์ได้เช่นกัน
MJH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.