返回列表 上一主題 發帖

[發問] 關於動態範圍定義名稱

回復 1# t76725


我試了一下只發現一個方法,不過來源資料會將我在【資料範圍】所填入的自訂名稱(例:test!data)自動轉為位址型式的範圍(例:=test!$A$1:$G$18)
作法如下:
假設:原始資料範圍的左上角在工作表"test"的A1, 且原先已有圖表
情況1.未來若僅新增列資料
將原始資料範圍改為清單(資料=>清單=>建立清單) => 則未來若有新增列資料,會自動更新圖表


情況2. 未來若會新增欄資料,則須如下做:
1. 以 插入=> 名稱 => 定義將原始資料範圍設為動態名稱data=OFFSET(test!$A$1,,,COUNTA(test!$A:$A),COUNTA(test!$1:$1))


2. 圖表=>來源資料=>在【資料範圍】填入=test!data =>確定
使用時機:每當有新增欄資料,須重作步驟2

TOP

回復 5# t76725


    沒您的資料檔,很難猜測您是哪兒卡到了!! 請問有先定義名稱嗎?

TOP

回復 7# t76725


    我試試吧!  不過沒看到您的檔?

TOP

回復 10# t76725


    我試了一下, 問題點:
1. A1是空格 請補個標題如"data", 再將游標停在data(即A1) 插入=>名稱=>定義 data  =OFFSET(Sheet1!$A$1,,,COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$1:$1))
2. 您雖是畫XY散佈圖, 可是X與Y坐標軸恰好相反, 雖用我的方法可以一次將多筆資料設入,可是電腦會自動把您的圖倒過來(如下)

TOP

回復 13# t76725


    我所說的第2個問題點正是如此!

TOP

本帖最後由 infoverdad 於 2011-9-5 18:31 編輯

回復 14# infoverdad

可能須以VBA來解決了!!
可我的功力不夠,只能做到下面的重畫,代碼及檔案附上,看是否有人可以做到只處理新增某欄資料的部份.
Redraw.rar (11.21 KB)
  1. Sub RedrawXYchart()

  2. '編製一個循環分別為每個系列(點)指定數據區域(X,Y坐標)
  3. Dim i As Integer

  4. Dim myRange As Range
  5. Set myRange = Sheet1.UsedRange
  6. myRange.Select

  7. Charts.Add
  8. ActiveChart.ChartType = xlXYScatterSmooth
  9. ActiveChart.SetSourceData Source:=myRange, PlotBy:=xlColumns

  10. For i = 1 To Sheet1.UsedRange.Columns.Count - 1

  11. ActiveChart.SeriesCollection(i).Name = "=Sheet1!R1C" & i + 1
  12. ActiveChart.SeriesCollection(i).XValues = "=Sheet1!R2C" & i + 1 & ":R26C" & i + 1
  13. ActiveChart.SeriesCollection(i).Values = "=Sheet1!R2C1:R26C1"

  14. Next
  15.     ActiveChart.ChartArea.Select
  16.     ActiveChart.HasLegend = True
  17.     ActiveChart.Legend.Select
  18.     Selection.Position = xlBottom

  19. End Sub
複製代碼

TOP

回復 16# t76725


    您可以自行測試吧 只要邏輯是類似的話

TOP

        靜思自在 : 要用心,不要操心、煩心。
返回列表 上一主題