2012-12-28 68 views
1

我想在一張紙上取一個非均勻範圍的數據並將其鏈接起來(單元格將具有「= Sheet1!A1」,而不是硬編碼值)到同一工作簿中的另一個工作表。基於非均勻數據範圍的兩張紙之間的數據鏈接

,因爲我得到了很多空單元格在我的選擇,我不希望鏈接到另一個工作表

這裏是我的代碼到目前爲止我不能只使用.UsedRange,但我得到一個錯誤說你不能使用.copy這種選擇。有人可以提出一個解決方法。謝謝。

Sub test() 
Application.ScreenUpdating = False 


ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants).Copy 
With Sheets("Sheet2") 
    .Activate 
    .Range("A1").Select 
    ActiveSheet.Paste Link:=True 
End With 


Application.CutCopyMode = False 
Application.ScreenUpdating = True 
End Sub 
+0

您是否在尋找所有範圍與價值觀複製他們,而留下的空白的嗎? –

+0

信息如何安排在原始工作簿中?全部在A列?多列?一排,多排?你能否舉一個小例子來說明原始數據表中的數據,以及你希望如何查看成品? –

+0

我不知道如何在這裏附加excel文件.. could not找到一種方法來附加它,所以這裏是下一個最好的東西....數據在5-6列向下100行左右。有多個表格標題以空白行分隔。我希望空行/單元格不要鏈接到新工作表。 – eMTy

回答

0

可以在由小區中的SpecialCells範圍細胞迭代,並寫入基於所述源小區的地址的鏈接,這樣

Sub test() 
    Dim cl As Range 
    Dim sh As Worksheet 
    Dim ShName As String 
    Dim OldCalc As XlCalculation 

    Application.ScreenUpdating = False 
    OldCalc = Application.Calculation 
    Application.Calculation = xlCalculationManual 

    Set sh = Worksheets("Sheet2") 
    sh.Cells.Clear '<-- Optional 
    ShName = "='" & ActiveSheet.Name & "'!" 
    For Each cl In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants) 
     sh.Range(cl.Address).Formula = ShName & cl.Address 
    Next 

    Application.ScreenUpdating = True 
    Application.Calculation = OldCalc 
End Sub 

雖然循環在一定範圍內是不理想的(由於速度)在這種情況下可能就足夠了。

Sub將錯誤,如果活動工作表是空的:你可能要添加一個錯誤處理程序,這種情況下

+0

非常感謝你這個作品像一個魅力! – eMTy

+0

錯誤處理應始終與'SpecialCells'一起使用。 – brettdj