返回列表 上一主題 發帖

[發問] 如何在 Excel 的圖表中將無資料日期不顯示

[發問] 如何在 Excel 的圖表中將無資料日期不顯示

本帖最後由 saleen 於 2013-10-29 18:11 編輯


論壇不知道為什麼不能上傳圖片

小妹想請問的是
像圖中紅圈的部份
因為是六日所以是沒有資料的
可是 Excel 的圖表卻會自行補上沒有資料的日期導致像圖中那樣的情況

有什麼辦法可以跳過沒資料的日期不要顯示嗎 ?
我試過用文字格式不要用日期 , 但這樣圖會變成全部擠到最左邊不知道什麼原因

還請各位大大救救小妹 ><
小妹在此向各位大大求教了 Orz

回復 1# saleen
妳將 Excel 檔案壓縮成 .rar 便可以使用附件上傳。

TOP

回復 1# saleen
圖表會忠實呈現資料,可利用篩選排除不想顯示的資料。
學海無涯_不恥下問

TOP

回復 2# c_c_lai

麻煩 Lai 大幫小妹看看 ><
而且小妹自己寫的巨集也跑得不正常
upd 那段都不會接在 update 後面跑...
不知道哪裡寫錯了
成交比重分析.rar (32.72 KB)
小妹在此向各位大大求教了 Orz

TOP

回復 4# saleen
問題出在妳圖表的 "選取資料(E)" ->  編輯數列 -> 數列值(Y) -> "=工作表1!$C$2:$C$67"
是否正確設定?
我觀察到妳的每一組選取資料之數列值範圍都類似為 "=(工作表1!$C:$C,工作表1!$C$1)" ????,
請將它們都修正為其相對應之確實數列值,例如: "=工作表1!$C$2:$C$67"。
我原本想進入一一修正,但是卻無能為力 (開啟檔案後等了將近十來分鐘都還在忙碌中,大概
是在處理圖表吧?)

TOP

回復 4# saleen
是不是妳的需求?
02.png
2013-11-1 18:27

我將妳的程式碼加入了資料座標值值的動態異動,
只要資料變動,它於執行 upd() 時會同時修正。
  1. Private Sub Workbook_Open()
  2.      Call updateDate     ' 程式一啟始,便去自動執行 updateDate     
  3.     newHour = Hour(Now())
  4.     newMinute = Minute(Now())
  5.     newSecond = Second(Now()) + 20
  6.     waittime = TimeSerial(newHour, newMinute, newSecond)
  7.     Application.Wait waittime     '   稍待 20 秒後執行 upd()
  8.     Call upd
  9. End Sub

  10. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  11.     Me.Save
  12. End Sub

  13. Sub updateDate()
  14.     Dim Rng As Range

  15.     With 工作表1
  16.         If .[A2] <> Date Then
  17.             '  .Range("A2:H2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
  18.             .Range("A2:H2").Insert Shift:=xlShiftDown
  19.             .[A2] = Date
  20.         End If
  21.     End With
  22. End Sub

  23. Sub upd()
  24.     Dim Rng As Range
  25.    
  26.     With 工作表1
  27.         Set Rng = .[B2].Resize(1, 5)
  28.         
  29.         If .[A2] = Date Then
  30.             '  因為原指定的 J44 會因資料之行數增減而有所變動。
  31.             Rng(1) = "=XQNET|Quote!'TSEX5.TW-StockValueRatio'"
  32.             Rng(2) = "=XQNET|Quote!'TSEX5.TW-PriceChangeRatio'"
  33.             Rng(3) = "=XQNET|Quote!'TSEX8.TW-StockValueRatio'"
  34.             Rng(4) = "=XQNET|Quote!'TSEX8.TW-PriceChangeRatio'"
  35.             Rng(5) = "=100-B2-D2"
  36.             Rng.Value = Rng.Value              '  將公式以欄值取代
  37.         End If
  38.     End With
  39.    
  40.     reDraw       '  重新繪製圖表座標值
  41. End Sub

  42. Sub reDraw()
  43.     Dim shp As Integer, EndKBarRow As Long
  44.    
  45.     With 工作表1
  46.         EndKBarRow = .Range("B" & Sheets("工作表1").Rows.Count).End(xlUp).Row
  47.         shp = 0
  48.         For Each oShape In .Shapes
  49.             If oShape.Type = 3 Then            '  既有的統計圖表
  50.                 oShape.Select
  51.                 shp = shp + 1
  52.                  
  53.                 With ActiveChart
  54.                     .SetSourceData Source:=IIf(shp = 1, Range("工作表1!$A$1:工作表1!$A$" & CStr(EndKBarRow) & ", 工作表1!$B$1:工作表1!$B$" & CStr(EndKBarRow)), _
  55.                                            IIf(shp = 2, Range("工作表1!$A$1:工作表1!$A$" & CStr(EndKBarRow) & ", 工作表1!$C$1:工作表1!$C$" & CStr(EndKBarRow)), _
  56.                                            IIf(shp = 3, Range("工作表1!$A$1:工作表1!$A$" & CStr(EndKBarRow) & ", 工作表1!$D$1:工作表1!$D$" & CStr(EndKBarRow)), _
  57.                                                         Range("工作表1!$A$1:工作表1!$A$" & CStr(EndKBarRow) & ", 工作表1!$E$1:工作表1!$E$" & CStr(EndKBarRow)))))
  58.                     With .Axes(xlCategory)
  59.                         .CategoryType = xlTimeScale
  60.                         .MajorUnit = 1
  61.                         .MajorUnitScale = xlDays
  62.                         .MinorUnit = 1
  63.                         .MinorUnitScale = xlDays
  64.                     End With
  65.                 End With
  66.             End If
  67.         Next
  68.         .[A1].Select
  69.     End With
  70. End Sub
複製代碼

TOP

回復 4# saleen


    請問開啟檔案時會出現,無法執行 XQNET.EXE,這是要安裝什麼程式
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復  saleen


    請問開啟檔案時會出現,無法執行 XQNET.EXE,這是要安裝什麼程式
ML089 發表於 2013-11-2 20:17

當第一次開啟含有 DDE 連結的 Excel 檔案時,其步驟如下:
1.  如你目前之案例,首先將你已匯入處裡的檔案刪除掉,再重新下載一次。
2.  開啟該檔案,其上方列會提示你是否 "啟動",請你先檢查程式碼
      Workbook_BeforeClose(Cancel As Boolean) 內是否有 Me.Save,
      如有則將它先行 Mark (  '  Me.Save ) ,然後將此修正予以儲存 (是 VBA 的檔案儲存),
      接後再去點選 "啟動",啟動該 Excel。
3.  按完 "啟動",則再次將該 Excel 檔關閉不儲存
4.  再次開啟該檔案,選擇不連線。之後就一切 OK 了!

TOP

回復 8# c_c_lai


    c_c_lai 大大 :

我以您的程式碼去執行
問題好像還是存在
就是無資料的日期區間還是會自動產生空格 ><
且 upd 不知道為什麼還是不會自動執行
一定要我手動點執行巨集它才會跑
我都已經給它 20 秒的等候時間了 ><...
小妹在此向各位大大求教了 Orz

TOP

本帖最後由 saleen 於 2013-11-4 14:56 編輯

這邊附上圖 , 可能會比較清楚一些

qs.jpg
2013-11-4 14:50


我的流程是 :
1. 若 A2 不是今日日期就將 A2 到 F2 下移並新增一行 , 並將 A2 插入今日日期
2. 接著等 20 秒
3. 將 J44 到 M44 的 DDE 撈出之資料更新到 B2 到 F2 中 (因為插入並下移的是 A2 到 F2 , 所以 J44 到 M44 不會有被下移的問題 )

其中 J44 到 M44 是從 XQ 撈 DDE 的 , 所以不會有問題
所以不知道為什麼 3 每次都不會執行 ><
都要手動執行

而且 Excel 的圖表繪圖速度好慢喔..
每次開檔案之後都要等它畫完圖
所以我才會給它過 20 秒再去更新
但它卻不會執行..
小妹在此向各位大大求教了 Orz

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題