2017-06-15 59 views
1

爲了瀏覽我要求分析的複雜電子表格,我需要工作表中所有當前區域的列表。 Excel的幫助並沒有給我很多線索。到目前爲止,我的解決方案是使用特殊單元函數遍歷區域,但速度很慢。如何列出一個工作表中的所有Excel當前區域

Function list_all_current_regions(work_sheet) 
    Dim current_region_dic As New Dictionary 
    Set r = work_sheet.Cells(1, 1) 
    For Each x In Array(xlCellTypeConstants, xlCellTypeFormulas) 
     Set c = work_sheet.Cells(1, 1).SpecialCells(x, 23) 
     For Each a In c.Areas 
      If Not current_region_dic.Exists(a.CurrentRegion.Address) Then 
       current_region_dic.Add a.CurrentRegion.Address, ""     
      End If 
     Next 
    Next 
    Set list_all_current_regions = current_region_dic 

End Function 

是否有更明智的方式來列出工作表中的所有當前區域?

回答

0

多年來,我避免在工作表上出現多個範圍,因爲您詢問的原因很多,並且當客戶端給我一個設計爲單個「ubersheet」的模型時,我將斷開的內容移動到它自己的工作表上。

我發現的唯一方法是使用命名範圍。可以使用附加到工作簿和工作表對象的名稱集合來訪問它們。

我會給出的另一個提示是隻使用左上角的命名區域,然後您可以使用CurrentRegion屬性來獲取整個範圍。這有助於擴展您不想進入的區域來設置和重置整個範圍。

https://msdn.microsoft.com/en-us/library/office/ff196678.aspx?f=255&MSPPError=-2147217396

+0

感謝您的意見。在這種特殊情況下,我必須使用'遺留'電子表格,我不能改變,但通常這似乎是一個很好的建議,我會牢記。 – Asthmanaut

+0

如果沒有將數據分離到數據「島」中,.CurrentRegion屬性可能會向上和/或向右收集單元格。 – Jeeped

相關問題