Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBA Excel Filter mit vor Definiertem Freien Platz

Frage Entwicklung VB for Applications

Mitglied: chaos2go

chaos2go (Level 1) - Jetzt verbinden

16.01.2015, aktualisiert 19.01.2015, 1134 Aufrufe, 14 Kommentare

Hey ihr ,


unzwar habe ich einen Excel Report , für den ich ein VBA script habe , was mir meine direkten sachen Filtert.
Das Filtern funktioniert auch so ohne Problem ,es werden meine Excel Sheets erstellt alles Gut .

Jetzt kommt es zu der Frage

Zur Info : Es sind Status Einträge

Ich erstelle ein Dictenory mit allen Einträgen in meinem Fall ist es [ - A bis ZY ] .

Jetzt sollen alle einträge in dem neuen Sheet nicht am Anfang sondern paar Spalten weiter unten eingefügt werden , da oben für jeden Status ein Seperater Text Spezifisch für den Status mit eingefügt werden soll .


Also wenn er mir z.B. den Sheet A erstellt Diesen xyz Text mit einfügen und darunter weiter machen mit den Einträgen .

Wenn er jetzt zum erstellen von Sheet B kommt Diesen Text mit Blabla einfügen .


Aufbau des Excel Files

Geht von A - L


Einträge sind

von links nach rechts ...


Beschreibung , Bezeichner ,Betreiberbezeichner , Wert, Einheit ,Objektbeschreibung , Zustand , Typ ;L/S, Parameter, Min, Max

Ich Filter nach Zustand und erstelle für jede Zustands möglichkeit ein neues Sheet wo alle Einträge mit dem Zustand Hinzugefügt werden , das Funktioniert Ohne Probleme .


Es gibt gesamt 14 Zustände


jetzt soll für Jeden Zustand ein Seperater Text am Anfang mit eingefügt werden und darunter die Einträge


Beispiel :


Zustand 1 Es muss das und das Gemacht werden

Datensatz


Datensatz
.....


alle Einträge mit mit Zustand 1 abgearbeitet , kommt Zustand 2


wieder oben der Eintrag

Zustand 2 Hier muss es anders Gemacht werden


Datensatz

Datensatz

...


usw ...


hoffe man versteht es nu besser , es ist immer blöd was zu erklären was man selber nicht ganz versteht ...


code sieht wie folgt aus (beiu dem Wurde mir hier auch geholfen )

01.
 
02.
Sub CopyUniqueToSheets() 
03.
 
04.
     'Alle Leeren Einträge mit etwas Füllen keine Datei mit Leeren Namen erstellt werden kann  
05.
    Columns("G:G").Select 
06.
    Selection.Replace What:="", Replacement:="empty", LookAt:=xlPart, _ 
07.
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
08.
        ReplaceFormat:=False 
09.
 
10.
 
11.
 
12.
    Dim ws As Worksheet, newWS As Worksheet, cell As Range, dic As Object, c As Range 
13.
    'Dictionary-Objekt erzeugen 
14.
    Set dic = CreateObject("Scripting.Dictionary") 
15.
    'Worksheet festlegen in dem die Daten liegen 
16.
    Set ws = Sheets(1) 
17.
    'letze Zeile ermitteln 
18.
    lastRow = ws.UsedRange.Rows.Count 
19.
     
20.
    For Each cell In ws.Range("G25:G" & lastRow) 
21.
        'Wenn der Zustand in der aktuellen Zelle noch nicht verarbeitet wurde 
22.
        If Not dic.Exists(cell.Value) Then 
23.
            'Zustand zum Dictionary hinzufügen 
24.
            dic.Add cell.Value, "" 
25.
            'neues Worksheet hinzufügen 
26.
            Set newWS = Worksheets.Add(After:=Worksheets(Worksheets.Count)) 
27.
            'dem Worksheet den Namen des Zustandes geben 
28.
            newWS.Name = cell.Value 
29.
            'Überschriftenzeile übertragen 
30.
            ws.Range("A24").EntireRow.Copy newWS.Range("A24") 
31.
            'Suche in Spalte G 
32.
            With ws.Range(cell, "G" & lastRow) 
33.
                'Suche den Zustand in der aktuellen Zelle 
34.
                Set c = .Find(cell.Value, LookIn:=xlValues) 
35.
                If Not c Is Nothing Then 
36.
                    firstAddress = c.Address 
37.
                    Do 
38.
                        'Eintrag gefunden, kopiere die gefundene Zeile ins neue Sheet ans Ende 
39.
                        c.EntireRow.Copy newWS.UsedRange.Cells(newWS.UsedRange.Rows.Count + 1, 1) 
40.
                        'Suche den nächsten Eintrag 
41.
                        Set c = .FindNext(c) 
42.
                    Loop While Not c Is Nothing And c.Address <> firstAddress 
43.
                End If 
44.
            End With 
45.
        End If     
46.
    Next 
47.
 MsgBox "Its Done" 
48.
End Sub 
49.
 
50.
 
51.
 
52.
 
53.
 
54.
 




danke schon mal im voraus für die Hilfe


gruß chaos2go
Mitglied: 114757
16.01.2015, aktualisiert um 11:20 Uhr
Zitat von chaos2go:
Also wenn er mir z.B. den Sheet A erstellt Diesen xyz Text mit einfügen und darunter weiter machen mit den Einträgen
Wenn er jetzt zum erstellen von Sheet B kommt Diesen Text mit Blabla einfügen .
Ich glaube keiner versteht hier so ganz was du meinst. Nutze unseren vielfältigen Formatierungsmöglichkeiten um deiner Erklärung etwas mehr Klarheit zu verleihen.
Stell dir immer vor das wir dein Sheet nicht kennen...

Gruß jodel32
Bitte warten ..
Mitglied: Xolger
16.01.2015 um 11:37 Uhr
Hallo,

ich bin mit VBA Script nicht weiter vertraut, aber ausgehend von VBA sollte es doch möglich sein,
die erste Zeilennummer anzugeben, wo dein Report hingeschrieben wird.

Bzw. hast du eine Variable für den Zeilenindex und fängst mit deinen Texten bei Zele 1 an und die Variable wird dann beim Report weiter hochgezählt.


Gruß
Xolger
Bitte warten ..
Mitglied: chaos2go
16.01.2015 um 11:44 Uhr
Wenn ich erlich bin , wusste ich es auch nicht so genau wie ich es beschreiben sollte

aber ich ändere es jetzt gleich nochmal
Bitte warten ..
Mitglied: chaos2go
16.01.2015 um 11:45 Uhr
Ja das denke ich schon , man kann ja Ranges erstellen

Problem ist nur für jeden Status einen Direkten Text mit am Anfang anzufügen
Bitte warten ..
Mitglied: Xolger
16.01.2015 um 11:59 Uhr
Nimmst du VBA Script oder hast du ein Makro welches du unter VBA ausführst?
Bitte warten ..
Mitglied: chaos2go
16.01.2015 um 12:02 Uhr
Ich hab ein VBA Script
Bitte warten ..
Mitglied: Xolger
16.01.2015 um 12:06 Uhr
Keine Ahnung wie du es für den Report realisiert hast aber:
Vor der Ausgabe in einem Sheet kannst du doch erstmal eine Zelle (1,1) ansteuern und deinen Text reinschreiben lassen.
Dann legt der Report los und startet mit der Ausgabe halt bei Zelle (2,1).

Oder sehe ich das zu simpel?

Ansonsten poste mal einen Codeschnipsel damit man sieht wie das Script arbeitet.
Bitte warten ..
Mitglied: chaos2go
16.01.2015 um 12:43 Uhr
Ja in der Regel ja aber dann kommt für jeden zustand der Selbe Text

Das Problem ist jeder Zustand hat einen Seperaten Bestimmten Text
Bitte warten ..
Mitglied: Xolger
16.01.2015 um 12:54 Uhr
Du steuerst doch die Ausgabe für den Report auch Sheetabhängig oder?
Dann erstelle dir doch eine Variable für jeden Sheet bzw. übergebe an eine Variable den Sheetabhängigen Text bevor der Report im Sheet loslegt.
Bitte warten ..
Mitglied: chaos2go
16.01.2015 um 13:20 Uhr
Also er erstellt für jeden Zustand Eintrag einen neuen Sheet mit desen namen und allen Einträgen
Bitte warten ..
Mitglied: Xolger
16.01.2015 um 14:33 Uhr
Und da musst du ansetzen und deinen Text mit unterbringen.
Ohne Codeschnipsel aus deinem Script wird dir hier bloß keiner helfen können.
Wir wissen ja nicht wie dein Script aussieht, um dir genau zu sagen wo was rein muss.
Bitte warten ..
Mitglied: chaos2go
16.01.2015 um 14:45 Uhr
hab das script oben mit gepostet
Bitte warten ..
Mitglied: 114757
LÖSUNG 16.01.2015, aktualisiert 19.01.2015
Moin,
einfach in einem zweiten Dictionary zu Beginn deine Statustexte mit den Zuständen als Key hinterlegen:
01.
set dicZustandstexte = CreateObject("Scripting.Dictionary") 
02.
dic.add "Zustand1","Es muss das und das Gemacht werden" 
03.
dic.add "Zustand2","Hier muss es anders Gemacht werden " 
04.
dic.add "Zustand3","Und hier noch was anderes" 
05.
' und so weiter
Und dann hinter Zeile 30 folgendermaßen in das jeweilige Sheet einfügen
01.
if dicZustandstexte.Exists(cell.Value) then 
02.
    newWS.Range("A22").Value = dicZustandstexte.Item(cell.Value) 
03.
End if
Gruß jodel32
Bitte warten ..
Mitglied: chaos2go
19.01.2015 um 09:18 Uhr
merci ,
ich werde es mal versuchen umzusetzten


gruß chaos2go
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
gelöst Verschieben von Zellinformation in andere Spalte (per VBA) excel 2010 (5)

Frage von thomas1972 zum Thema Microsoft Office ...

VB for Applications
Bilder vom LDAP in VBA - Excel (3)

Frage von Roadrunner777 zum Thema VB for Applications ...

VB for Applications
gelöst VBA Excel Recordset - Abfrage auf SQL-Server (4)

Frage von Aximand zum Thema VB for Applications ...

VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...