Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Daten aus Spalte auslesen und kopieren
#1
Hallo zusammen,

ich möchte aus einer mehrspaltigen Tabelle bestimmte Werte herauskopieren und in einer anderen Tabelle einfügen. 
Das ist die Ausgangstabelle:
Tabelle4

ABCD
1AbteilungNameVornameFunktion
2AWannemakerKarinAbteilungsleiter
3AEichmannVanessaStellvertretender Abteilungsleiter
4AVogelMichaelBürovorsteher
5AFischerStephanAngestellter
6ASchusterKatrinAngestellter
7APropstLauraAngestellter
8ASchusterSaraAngestellter
9AMayerLeahAngestellter
10AWolfMartinAngestellter
11ADeckerPhillippAngestellter
12AMauerJensAngestellter
13BTraugottKristinAbteilungsleiter
14BWirthLucasStellvertretender Abteilungsleiter
15BThalbergBrigitteBürovorsteher
16BBraunSarahAngestellter
17BVogtDennisAngestellter
18BRothClaudiaAngestellter
19BEichmannMaxAngestellter
20BKellerMartinaAngestellter
21BWirthLeonieAngestellter
22BSchultzPhillippAngestellter
23CSchmitzSvenAbteilungsleiter
24CFruehSwenStellvertretender Abteilungsleiter
25CHerrmannRalphBürovorsteher
26CSchulzJörgAngestellter
27CSchultzMartinaAngestellter
28CEichmannStefanieAngestellter
29CWannemakerLeonieAngestellter
30CPropstJanaAngestellter
31CTraugottDirkAngestellter
32CLoeweAnnaAngestellter
33DWeberSimoneAbteilungsleiter
34DHahnJörgStellvertretender Abteilungsleiter
35DHahnRalphBürovorsteher
36DWernerMarioAngestellter
37DWeiszSabrinaAngestellter
38DBeikeMariaAngestellter
39DKönigLauraAngestellter
40DWeiszThomasAngestellter
41DEbersbacherJürgenAngestellter

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Nun sollen alle Abteilung mit den dazu gehörenden Mitarbeitern in einem anderen Blatt nebeneinander dargestellt werden: 
Tabelle5

ABCDEFGHIJKLMNOP
1AbteilungNameVornameFunktionAbteilungNameVornameFunktionAbteilungNameVornameFunktionAbteilungNameVornameFunktion
2AWannemakerKarinAbteilungsleiterBTraugottKristinAbteilungsleiterCSchmitzSvenAbteilungsleiterDWeberSimoneAbteilungsleiter
3AEichmannVanessaStellvertr. AbteilungsleiterBWirthLucasStellvertr. AbteilungsleiterCFruehSwenStellvertr. AbteilungsleiterDHahnJörgStellvertr. Abteilungsleiter
4AVogelMichaelBürovorsteherBThalbergBrigitteBürovorsteherCHerrmannRalphBürovorsteherDHahnRalphBürovorsteher
5AFischerStephanAngestellterBBraunSarahAngestellterCSchulzJörgAngestellterDWernerMarioAngestellter
6ASchusterKatrinAngestellterBVogtDennisAngestellterCSchultzMartinaAngestellterDWeiszSabrinaAngestellter
7APropstLauraAngestellterBRothClaudiaAngestellterCEichmannStefanieAngestellterDBeikeMariaAngestellter
8ASchusterSaraAngestellterBEichmannMaxAngestellterCWannemakerLeonieAngestellterDKönigLauraAngestellter
9AMayerLeahAngestellterBKellerMartinaAngestellterCPropstJanaAngestellterDWeiszThomasAngestellter
10AWolfMartinAngestellterBWirthLeonieAngestellterCTraugottDirkAngestellterDEbersbacherJürgenAngestellter
11ADeckerPhillippAngestellterBSchultzPhillippAngestellterCLoeweAnnaAngestellter
12AMauerJensAngestellter

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Meine Versuche mit Schleifen zu arbeiten scheitern bisher daran, dass es mehrere Bedingungen gibt, die zu Erfüllen sind. Ich komme irgendwie nicht dahinter...

Ich bin für jede Hilfe dankbar... Smile

P.S. Die Namen in der Liste sind aus einer Fake-Liste entnommen und nicht real. Zufällige Namensgleichheiten bitte ich zu entschuldigen...

Gruss

Rolf
Antworten Top
#2
Hola,



Zitat:dass es mehrere Bedingungen gibt, die zu Erfüllen sind


ich sehe nur eine, die Abteilung in Spalte A. Welche gibt es denn noch?

Gruß,
steve1da
Antworten Top
#3
Mit mehreren Bedingungen meinte ich die verschiedenen Abteilungen...
Antworten Top
#4
Hat jemand eine Idee wie ich das bewerkstelligen kann? 
Die Mitarbeiter jeder Abteilung sollen abteilungsweise ausgelesen und dann in ein anderes Tabellenblatt nebeneinander eingefügt werden.
Die Mitarbeiter in ein anderes Tabellenblatt untereinander zu bekommen, das klappt. Mir fehlt nur der Hinweis, wie ich die zu einer anderen 
Abteilung gehörenden Mitarbeiter nebeneinander anordnen kann.
Hier der Code, der die Mitarbeiter untereinander anordnet...

Edit: Der Fehler, bzw. die Crux liegt vermutlich in der Destination-Anweisung... 

Code:
Sub kopieren()
Dim x As Long
Dim y As Long
y = 2
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To lastrow

If Cells(x, 1) = "A" Then
Rows(x).Copy Destination:=Tabelle6.Rows(y)
y = y + 1
Else
End If

If Cells(x, 1) = "B" Then
Rows(x).Copy Destination:=Tabelle6.Rows(y)
y = y + 1
Else
End If

If Cells(x, 1) = "C" Then
Rows(x).Copy Destination:=Tabelle6.Rows(y)
y = y + 1
Else
End If

If Cells(x, 1) = "D" Then
Rows(x).Copy Destination:=Tabelle6.Rows(y)
y = y + 1
Else
End If

Next
End Sub
Antworten Top
#5
Hi,

dein Beispiel hat 4 Abteilungen.
Bleibt es dabei?
oder können es auch 1000 sein?
Egal Undecided
Normalerweise kopiert man in VBA nicht Bereiche, sondern füllt sie direkt nach dem Schema:
rechts befüllt links
Also
Zieltabelle.ZielZelle = Quelltabelle.QuellZelle

Du läufst  mit einer Schleife von Oben bis unten durch.
Wenn sich die Abteilungsbezeichnung ändert, erhöhst du die Spalte um 4 und setzst Zeile wieder auf Anfang.
Bekommst du das hin?
Antworten Top
#6
Zitat:Bekommst du das hin?
Eher nicht...  Huh
Antworten Top
#7
Da ich es bislang selbst nicht hinbekommen habe und mir hier scheinbar niemand helfen kann oder zumindest mal einen Anstoß in die richtige Richtung geben kann (will), 
werde ich eben anderweitig versuchen eine Lösung zu finden.

Schade eigentlich...
Antworten Top
#8
Hallo autostrada,

Sorry, hatte Wochenende und Real-Leben.
Vielen Dank, dass du zumindest 1 meiner Fragen beantwortet hast.

genau auf dein Beispiel zugeschnitten der Code, der bei mir funktioniert:
Er kopiert es in ein neues Tabellenblatt
Code:
Option Explicit

Sub autostrada()
Dim Abteilung_Lang
Dim intLauf1 As Integer
Dim intLauf2 As Integer
Dim intSpalte
Dim neublatt
Dim Quelle

Quelle = ActiveSheet.Name
Sheets.Add
neublatt = ActiveSheet.Name
'Sheets(Quelle).Activate

Abteilung_Lang = Sheets(Quelle).Range("A1: D41")
intLauf2 = 1
intSpalte = 1
For intLauf1 = 1 To 41
   If intLauf1 = 1 Then
           Sheets(neublatt).Cells(intLauf2, intSpalte) = Abteilung_Lang(intLauf1, 1)
           Sheets(neublatt).Cells(intLauf2, intSpalte + 1) = Abteilung_Lang(intLauf1, 2)
           Sheets(neublatt).Cells(intLauf2, intSpalte + 2) = Abteilung_Lang(intLauf1, 3)
           Sheets(neublatt).Cells(intLauf2, intSpalte + 3) = Abteilung_Lang(intLauf1, 4)
           intLauf2 = intLauf2 + 1
   ElseIf Abteilung_Lang(intLauf1, 1) <> Abteilung_Lang(intLauf1 - 1, 1) And intLauf1 > 2 Then
           intSpalte = intSpalte + 4
           intLauf2 = 1
           ' Überschrift
           If intLauf2 = 1 Then
               Sheets(neublatt).Cells(intLauf2, intSpalte) = Abteilung_Lang(1, 1)
               Sheets(neublatt).Cells(intLauf2, intSpalte + 1) = Abteilung_Lang(1, 2)
               Sheets(neublatt).Cells(intLauf2, intSpalte + 2) = Abteilung_Lang(1, 3)
               Sheets(neublatt).Cells(intLauf2, intSpalte + 3) = Abteilung_Lang(1, 4)
               intLauf2 = intLauf2 + 1
           Else
           ' Kollegen
           Sheets(neublatt).Cells(intLauf2, intSpalte) = Abteilung_Lang(intLauf1, 1)
           Sheets(neublatt).Cells(intLauf2, intSpalte + 1) = Abteilung_Lang(intLauf1, 2)
           Sheets(neublatt).Cells(intLauf2, intSpalte + 2) = Abteilung_Lang(intLauf1, 3)
           Sheets(neublatt).Cells(intLauf2, intSpalte + 3) = Abteilung_Lang(intLauf1, 4)
           intLauf2 = intLauf2 + 1
           End If
   Else
           Sheets(neublatt).Cells(intLauf2, intSpalte) = Abteilung_Lang(intLauf1, 1)
           Sheets(neublatt).Cells(intLauf2, intSpalte + 1) = Abteilung_Lang(intLauf1, 2)
           Sheets(neublatt).Cells(intLauf2, intSpalte + 2) = Abteilung_Lang(intLauf1, 3)
           Sheets(neublatt).Cells(intLauf2, intSpalte + 3) = Abteilung_Lang(intLauf1, 4)
           intLauf2 = intLauf2 + 1
   End If
Next
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste