Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1556to1560
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro_Datenschnitt_auswählen

Makro_Datenschnitt_auswählen
23.05.2017 11:43:28
Paul
Hey, ich wieder :)
Bei dem unten aufgeführten Makro sucht er Kostenstellen um diese dann in einen Datenschnitt (Basis Powerpivot) einzufügen. Das Funktioniert auch super. Allerdings mit einer Einschränkung: Alle Werte, Kostenstellen in meinem Fall, müssen auch vorkommen, sonst gibt's einen Fehler. Kann ich dem Makro hinzufügen, dass er eine Kostenstelle halt nicht mitnehmen soll, wenn diese im Datenschnitt nicht verfügbar ist.
Gruß
Sub Vorgabe_Region_Standard_MA()
Const PRE As String = "[Mitarbeiter_Import_Monat_Jahr].[Kostenstelle2].&["
Const SUF As String = "]"
Const SPL As String = ","
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Kostenstellen_Region2")
Dim KstBereich As Range, c As Range, i As Long, a, b
With Ws
Set KstBereich = .Range("B3:B10000")
ReDim a(0 To KstBereich.Cells.Count)
For Each c In KstBereich
If c.Value  vbNullString Then
a(i) = PRE & c.Value & SUF & SPL
i = i + 1
End If
Next c
ReDim Preserve a(i)
End With
b = Split(Join(a, vbNullString), SPL)
ReDim Preserve b(UBound(b) - 1)
ActiveWorkbook.SlicerCaches("Datenschnitt_Kostenstelle2").VisibleSlicerItemsList = b
End Sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro_Datenschnitt_auswählen
23.05.2017 12:41:56
Michael
Hallo!
Scheint, als ob der Code mal von mir gewesen sein könnte.
Ich versteh allerdings nicht, worum's Dir geht:
Kostenstelle halt nicht mitnehmen soll, wenn diese im Datenschnitt nicht verfügbar ist.
Mit dem o.a. Code erzeugst Du ja einen Datenschnitt; was meinst Du mit "im Datenschnitt nicht verfügbar".
LG
Michael
AW: Makro_Datenschnitt_auswählen
23.05.2017 14:02:52
Paul
Der ist tatsächlich von dir und der ist auch einfach super.
Ich habe eine Tabelle aus der er sich die verschiedenen KST bezieht (Kostenstellen_Region2). Diese werden dann in den Datenschnitt übernommen. Wenn jetzt eine Kostenstelle in der Tabelle Kostenstellen_Region2 aufgelistet wird, diese aber nicht in den Daten vorhanden ist auf welche sich der Datenschnitt bezieht, gibt es eine Fehlermeldung. z.b. ist diese KST veraltet.
Dann sucht er die im Datenschnitt und kann diese nicht finden und will dann den Code nicht ausführen.
Anzeige
AW: Makro_Datenschnitt_auswählen
23.05.2017 14:44:52
Michael
Hallo!
Freut mich. ;-)
Okay, d.h. wir müssten beim Befüllen des Paramterarrays für den Datenschnitt prüfen, ob der jeweilige Wert auch in Grunddaten vorhanden ist; wenn nicht, wird dieser eben nicht übernommen.
Ist "Kostenstellen_Region2" eine formatierte Tabelle oder ein reguläres Tabellenblatt? Wo befinden sich die Grunddaten, heißt wo soll der Code die Gesamt-Kostenstellen prüfen um zu entscheiden, ob das zu einem Datenschnittelement wird oder nicht?
LG
Michael
AW: Makro_Datenschnitt_auswählen
24.05.2017 09:48:01
Paul
Kostenstellen_Region2 ist ein normales Tabellenblatt, indem über eine Indexformel mehrere Kostenstellen untereinander gelistet werden. Auf diese Liste greift dann der Code zu.
Die Grunddaten sind in Powerpivot hinterlegt. Da ist eine verknüpfte Tabelle aus Access und diese heißt tbl_KostenCO. Der Datenschnitt bezieht sich dann auf diese tbl_KostenCO
Anzeige
AW: Bsp-Datei/Spieldaten möglich?
24.05.2017 10:02:18
Michael
Hallo Paul!
Gibt's eine Chance auf eine Musterdatei? Dafür eine Spielwiese nachzubauen ist doch eher mühsam.
LG
Michael
AW: Bsp-Datei/Spieldaten möglich?
24.05.2017 12:24:02
Paul
https://www.herber.de/bbs/user/113771.xls
hier ist die Datei.
Konnte sie leider nur so hochladen. Das verwendete Makro habe ich einfach als Text eingefügt.
Aber hier ist der Fehler ersichtlich.
AW: Bsp-Datei/Spieldaten möglich?
24.05.2017 13:28:43
Paul
Das Tabellenblatt "Grunddaten" habe ich in Powerpivot geladen.
In meiner originären Datei stammen die Daten aus Access und werden dann in Powerpivot geladen.
Aber das Prinzip ist ja das Gleiche.
Anzeige
AW: Versuch...
24.05.2017 14:38:27
Michael
Hallo!
...es mal so:
Sub Vorgabe_Region_Beispiel()
Const PRE As String = "[Tabelle1].[Kostenstelle].&["
Const SUF As String = "]"
Const SPL As String = ","
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Kostenstellen_Region2")
Dim WsGd As Worksheet: Set WsGd = Wb.Worksheets("Grunddaten")
Dim KstBereich, KstVorhanden As Range, a, b, i&, j&, c
With WsGd
Set KstVorhanden = .Range("D2:D" & .Cells(.Rows.Count, 4).End(xlUp).Row)
End With
With Ws
KstBereich = .Range("B3:B100")
ReDim a(0 To UBound(KstBereich))
For i = LBound(KstBereich) To UBound(KstBereich)
If KstBereich(i, 1)  vbNullString Then
c = Application.Match(KstBereich(i, 1), KstVorhanden, 0)
If Not IsError(c) Then
a(j) = PRE & KstBereich(i, 1) & SUF & SPL: j = j + 1
End If
End If
Next i
ReDim Preserve a(i)
End With
b = Split(Join(a, vbNullString), SPL)
ReDim Preserve b(UBound(b) - 1)
ActiveWorkbook.SlicerCaches("Datenschnitt_Kostenstelle").VisibleSlicerItemsList = b
End Sub
LG
Michael
Anzeige
AW: Versuch...
24.05.2017 15:13:08
Paul
PERFEKT! Du bist der Beste!
In der Beispieldatei funktioniert es wie gewünscht.
Jetzt versuche ich es auf meine richtige Datei zu übertragen. Hier gibt es nur einen kleinen Unterschied, dass ich quasi kein Tabellenblatt "Grunddaten" habe und sich alles in Powerpivot befindet.
An dieser Stelle Dim WsGd As Worksheet: Set WsGd = Wb.Worksheets("tbl_KostenCO") sucht er das Tabellenblatt tbl_KostenCO aber das gibt es nur in Powerpivot
Sub Vorgabe_Region_Beispiel_2()
Const PRE As String = "[tbl_KostenCO].[Kostenstelle].&["
Const SUF As String = "]"
Const SPL As String = ","
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Kostenstellen_Region2")
Dim WsGd As Worksheet: Set WsGd = Wb.Worksheets("tbl_KostenCO")
Dim KstBereich, KstVorhanden As Range, a, b, i&, j&, c
With WsGd
Set KstVorhanden = .Range("D2:D" & .Cells(.Rows.Count, 4).End(xlUp).Row)
End With
With Ws
KstBereich = .Range("B3:B100")
ReDim a(0 To UBound(KstBereich))
For i = LBound(KstBereich) To UBound(KstBereich)
If KstBereich(i, 1)  vbNullString Then
c = Application.Match(KstBereich(i, 1), KstVorhanden, 0)
If Not IsError(c) Then
a(j) = PRE & KstBereich(i, 1) & SUF & SPL: j = j + 1
End If
End If
Next i
ReDim Preserve a(i)
End With
b = Split(Join(a, vbNullString), SPL)
ReDim Preserve b(UBound(b) - 1)
ActiveWorkbook.SlicerCaches("Datenschnitt_Kostenstelle").VisibleSlicerItemsList = b
End Sub

Anzeige
AW: Bin leider...
24.05.2017 16:00:24
Michael
...jetzt schon weg, und erst wieder nächste Woche im Forum!
Evtl. müsstest Du auf offen stellen oder warten!
LG
Michael
AW: Bin leider...
29.05.2017 08:58:17
Paul
Diese Woche wäre auch noch super :)
Aktuell KEINE Zeit! Offen...
29.05.2017 12:47:09
Michael
Hallo Paul!
Sorry, ich bin diese Woche kaum noch "an der Maschine" - hoffe es steigt einE andereR HelferIn hier ein; ich kann die nächsten beiden Wochen leider nicht helfen.
LG
Michael
Jetzt OFFEN! owt
29.05.2017 12:47:46
Michael
AW: Jetzt OFFEN! owt
29.05.2017 14:01:24
Paul
Schade, vielleicht kann wirklich jemand anders helfen.
Ich muss letztendlich auf eine Tabelle in Powerpivot mittels vba Code zugreifen. Ich finde dafür einfach keinen Befehl.?!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige