2017-02-06 7 views
0

現在、グラフの範囲を積極的に定義するためのVBAコードを作成しています。Excelグラフの積極的な範囲を見つけるためのVBAコード

Sub ABC() 

Dim count As Integer 
Dim countAll As Integer 
Dim i As Integer 
Dim j As Integer 
Dim filter As Variant 
Dim exfilter As Variant 
Dim ws As Worksheet 
Set ws = Worksheets(1) 
Dim n As Integer 

'Cancel updating 
Application.ScreenUpdating = False 

'Clear oldsheet 
Sheets("FLAGGED rest # list").Activate 
Range("a3:a9999").ClearContents 

'Autofilter sheet and copy range 
Sheets("restaurant performance 2016").Activate 
Range("a7:ah7").Select 
Selection.AutoFilter 
ActiveSheet.Range("$A$7:$AH$510").AutoFilter Field:=11, Criteria1:="<>" 
ActiveSheet.AutoFilter.Range.Copy 

'Paste to new sheet 
Sheets("FLAGGED rest # list").Activate 
Cells(2, 1).Select 
ActiveSheet.Paste 
' 
'Clean out irrelevant data 
Range("b2:az9999").Clear 

'Count number of restaurants 
Sheets("flagged rest # list").Activate 
Cells(3, 1).Select 
Sheets("flagged rest # list").Range(Selection, Selection.End(xlDown)).Select 
count = Application.WorksheetFunction.CountA(Selection) 

'Count number of weeks 
Sheets("12 week trend").Activate 
Cells(2, 2).Select 

'Create Chart 
n = 2 + count 
rangestring = "$C$3:$O$" & n 
rangestring2 = "'12 week trend'!" & rangestring 
Sheets("12 week trend").Activate 
Range(rangestring).Select 
ActiveSheet.Shapes.AddChart2(332, xlLineMarkers).Select 
ActiveChart.SetSourceData Source:=Range(rangestring2) 

For i = 3 To n 
    legendString = "$B$" & i 
    legendString2 = "='12 week trend'!" & legendString 
    ActiveChart.FullSeriesCollection(i - 2).Name = legendString2 
Next i 
ActiveChart.FullSeriesCollection(1).XValues = "='12 Week Trend'!$C$2:$O$2" 

'Turn on updating 
Application.ScreenUpdating = True 

End Sub 

私の主なハードルは、新しい列に追加されるデータを収容できるようにするコードが必要なようです。たとえば、このコードでは、データ範囲は列「O」にハードコードされていますが、範囲が停止する列を特定できるモデルを作成したいと考えています。

変数rangestring2は、データの行数を動的に計算しますが、現時点では列に対して同じ行数を計算することはできません。

このフォーラムでは、これが私の初めてのご質問です。あなたの時間のためにありがとう!

+0

としてあなたの適切な範囲の文字列を決定することを使用することができ、あなたのコードが提供働いていますC:O列にデータがありますか? – user3598756

+0

はい!それは私がC:Oの間にデータを持っている限り動作しますが、それは他の列の追加データを受け取ることはありません。 –

+0

データの一部のスクリーンショットへのリンクを追加したい場合があります。 – user3598756

答えて

0

あなたはいつもの1等

Dim c As Long 
With Sheets("12 week trend") 
    c = .Cells(2, .Columns.Count).End(xlToLeft).Column 
End With 

などのメソッド、「最後の列を検索する」を使用して、このよう

Dim HdgString As String 
rangestring = Range(Cells(3, "C"), Cells(n, c)).Address 
HdgString = Range(Cells(2, "C"), Cells(2, c)).Address 
rangestring2 = "'12 week trend'!" & rangestring 
'... 
ActiveChart.FullSeriesCollection(1).XValues = "='12 Week Trend'!" & HdgString 
+0

これは私の問題を解決しました!ありがとう! –

関連する問題