2016-05-31 3 views
0

Ich habe eine Excel-Arbeitsmappe mit mehreren Blättern. In jedem Blatt habe ich 2 Zellenwerte mit Datum (Anfangsdatum und Enddatum).Excel List Sheet Namen + Werte

Mein Ziel ist es, ein neues Blatt (Indexblatt) zu erstellen, das eine Tabelle enthält, die alle vorhandenen Blätter in der Arbeitsmappe auflistet, und für jedes Blatt hätte ich die entsprechenden Zellenwerte für Anfangs- und Enddatum.

Etwas wie folgt aus:

-Name Startdatum Enddatum

Sheet01 01/01/2016 01/02/2016

Sheet02 12/02/2016 23/03/2016

Sheet03 22/03/2016 30/04/2016

Sheet04 22/12/2016 01/12/2016

Wie kann ich dies tun (wenn möglich vermeiden VBA, I`m kein Entwickler :))

Danke

enter image description here

+0

Wo werden diese Werte innerhalb der Blätter liegt – RBarryYoung

+1

Während es einige Methoden gibt, um die Liste der Blätter zu erhalten, ist es schneller und einfacher, sie von Hand einzugeben. Sobald die Liste erstellt wurde, muss nur noch die Funktion INDIRECT() verwendet werden. 'INDIREKT (" '"& A1 &"'! D1 ")' wobei A1 die Zelle ist, in der der erste Blattname steht und D1 die Zelle auf dem jeweiligen Blatt mit dem gewünschten Datum ist. Dann kann es nach unten gezogen werden. –

+0

Der Wert für Begin Date ist in D5 und für End Date in F5, diese Werte sind konsistent in allen Sheets – JPKI

Antwort

1

Sie haben soeben einen Bezug setzen könnte, wie „= Sheet1! B2 "B2 wäre die Zelle in Blatt 1 mit dem gewünschten Datum.

0

Verwenden Sie den folgenden Code. und ich gehe davon aus, dass Sie Datum und Enddatum bei Zelle b2 bzw. c2 jedes Blattes begonnen haben.

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

Wo lege ich diesen Code und wie verwende ich es in der Tabelle? – JPKI

+0

Hallo, Entschuldigung für die späte Antwort. Sie müssen diese Tabelle nicht platzieren. Sie müssen diesen Code jedoch im Makro/VBA-Teil von Excel speichern. –

0

Wenn die Daten in Zellen A1 sind und B1 jedes Blattes, dann:

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

Sie meinen 'n As String' und NICHT' sn As String' ...? – ManishChristian

+0

@ManishChristian ** Sie haben Recht. ** –