2016-05-31 189 views
0

我有一個帶有多張工作表的Excel工作簿。在每張紙上,我有2個單元格值與日期(開始日期和結束日期)。Excel列表工作表名稱+值

我的目標是創建一個新的工作表(索引表),其中有一張表列出了工作簿中所有現有的工作表,並且對於每張工作表,我將具有對應的單元格開始日期和結束日期值。

事情是這樣的:

名稱開始日期結束日期

Sheet01 2016年1月1日2016年1月2日

Sheet02 2016年12月2日23/03/2016

Sheet03 22/03/2016 30/04/2016

Sheet04 22/12/2016 01/12/2016

我怎樣才能做到這一點(如果可能的話避免VBA,我真的不是一個開發商:))

謝謝

enter image description here

+0

位於何處片內的這些值? – RBarryYoung

+1

雖然有幾種方法可以獲取紙張列表,但手動輸入紙張的速度更快,也更容易。一旦列表被創建,它只是使用INDIRECT()函數的問題。 'INDIRECT(「'」&A1&「'!D1」)'其中A1是第一個工作表名稱所在的單元格,D1是相應工作表上具有所需日期的單元格。然後它可以被拖下來。 –

+0

開始日期的值在D5中,而結束日期的值在F5中,這些值在所有表中都是一致的 – JPKI

回答

1

你可以只是把一個參考,比如「工作表Sheet1 =!B2 「B2將是Sheet 1中具有所需日期的單元格。

0

使用以下代碼。我假設你已經分別在單元格b2和c2處開始日期和結束日期。

Sub SheetNames() 
Columns(1).Insert 
For i = 1 To Sheets.Count 
Cells(i, 1) = Sheets(i).Name 
Cells(i, 2) = Sheets(i)!B2 
Cells(i, 3) = Sheets(i)!C2 
Next i 

End Sub 
+0

我在哪裏放置此代碼,以及如何在表格中使用它? – JPKI

+0

嗨, 對不起,延遲迴復。你不需要放置這張表,而是你需要將這些代碼保存在excel的macro/vba部分。 –

0

如果日期在細胞A1和每個片材的B1,則:

Sub IndexMaker() 
    Dim sh As Worksheet, n As String 

    With ThisWorkbook 
      .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "index" 
      Set sh = ActiveSheet 
    End With 

    For i = 1 To Sheets.Count 
     n = Sheets(i).Name 
     v1 = Sheets(i).Range("A1").Value 
     v2 = Sheets(i).Range("B1").Value 
     If n <> "index" Then 
      sh.Cells(i, "A").Value = n 
      sh.Cells(i, "B").Value = v1 
      sh.Cells(i, "C").Value = v2 
     End If 
    Next i 
End Sub 
+1

你的意思是'n作爲字符串'而不是'sn作爲字符串'...? – ManishChristian

+0

@ManishChristian **你是對的。** –