Excel Visual Basic Macro - динамический выбор данных для диаграммы? - PullRequest
1 голос
/ 19 февраля 2011

Итак, этот вопрос, вероятно, довольно глупый, но я не слишком знаком с Excel VBA.Вот мой сгенерированный код макроса, который импортирует данные из текстового файла и отображает их в виде графика.

Sub getData()
'
' getData Macro
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;C:\data.txt", Destination:=Range("$D$3"))
    .Name = "data_2"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 437
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With
Range("D3:H4").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Range("Sheet1!$D$3:$H$4")
End Sub

По сути, поскольку данные, введенные из data.txt, могут быть любой длины, эта программа не работает;это просто идет от D3: H3.Я бы хотел, чтобы график использовал данные от D3 до HX, где X - конец строки данных.Как бы я это сделал?Спасибо за помощь идиот !

Ответы [ 2 ]

0 голосов
/ 20 февраля 2011

Для этих фигур мне нравится использовать именованный диапазон с помощью = OFFSET ().
См. http://www.ozgrid.com/Excel/DynamicRanges.htm или Google для "Excel смещение динамического диапазона"

0 голосов
/ 19 февраля 2011

Вероятно, будет работать следующее:

Sub getData()
With ...
     ....
End With
LastRowColH = Range("H65536").End(xlUp).Row
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Range("Sheet1!$D$3:$H$" & CStr(LastRowColH))  
End Sub  

HTH!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...