Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Kopiere Zelle wenn Bedingungen erfüllt

Kopiere Zelle wenn Bedingungen erfüllt
22.03.2016 13:46:48
Christian
Hallo,
da ich hinsichtlich VBA ein kompletter Neuling bin, wäre ich Euch dankbar, wenn Ihr mir bei u.a. Problem helfen könnt:
Ich habe eine Auditdatei mit Fragen - die Bemerkungen zu diesen Fragen sollen automatisch in ein Zusammenfassungsblatt kopiert werden - dort gibt es 4 Kategorien - je nach Punktezahl sollen die Bemerkungen inkl. der Fragennummer in die jeweilige Kategorie kopiert werden.
Wie mach ich das? File habe ich hochgeladen:
https://www.herber.de/bbs/user/104532.xlsx
Was vielleicht noch anzumerken ist - wenn zu den Kategorien die leeren Zeilen nicht mehr ausreichen, sollen neue erstellt werden.
Weiters soll nur kopiert werden, wenn die Bemerkung einer Frage noch nicht in der Zusammenfassung existiert (nur Prüfung auf Fragennummer) - d.h. kein Kopieren mehr, auch wenn bei den Fragen die Bemerkung zwischenzeitlich geändert wurde.
Besten Dank im Voraus!
Lg

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: das wäre aber auch mit Formel möglich ...
22.03.2016 13:54:07
...
Hallo Christian,
... in Deiner Excelversion zwar mit "echter" Matrixformel aber auch das sollte für einen Excelprofi wie Dich möglich sein.
Gruß Werner
.. , - ...

AW: das wäre aber auch mit Formel möglich ...
22.03.2016 14:02:25
Christian
Mit Formeln kann ich das nicht machen, da man die kopierte Bemerkung in der Zusammenfassung ändern können soll - habe ich vergessen zu erwähnen - sorry... Weiters weiß ich nicht, wie die Zeilen erweitert werden wenn zuwenig Platz ist...

Anzeige
AW: VBA-Lösung gesucht owT
22.03.2016 15:33:38
...
Gruß Werner
.. , - ...

dann eben mit VBA
22.03.2016 16:17:55
ChrisL
Hi Christian
Siehe Anhang.
https://www.herber.de/bbs/user/104541.xlsm
Die Resultat Tabelle musste ich etwas anpassen (einheitliche Struktur). Verbundene Zellen machen nur Probleme und sind in diesem Fall unnötig.
Komische Punktewertung: 3,5,9 gibt es nicht...
Sub MachMal()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Long, tempZeile As Long
Dim strMark As String
Set WS1 = Worksheets("Fragen")
Set WS2 = Worksheets("Zusammenfassung")
Application.ScreenUpdating = False
For iZeile = WS1.Cells(WS1.Rows.Count, 3).End(xlUp).Row To 5 Step -1
If IsNumeric(WS1.Cells(iZeile, 3)) And WS1.Cells(iZeile, 3)  "" Then
Select Case WS1.Cells(iZeile, 3)
Case 10: strMark = "Positive Bemerkungen (10 Punkte):"
Case 6 To 8: strMark = "Hinweise / Verbesserungsvorschläge (6-8 Punkte):"
Case 4: strMark = "Nebenabweichungen (4 Punkte):"
Case 0 To 2: strMark = "Hauptabweichungen (0 - 2 Punkte):"
Case Else: strMark = ""
End Select
If strMark  "" Then
tempZeile = Application.Match(strMark, WS2.Columns(2), 0) + 1
WS2.Rows(tempZeile).Insert Shift:=xlDown
WS2.Cells(tempZeile, 1) = WS1.Cells(iZeile, 1)
WS2.Cells(tempZeile, 2) = WS1.Cells(iZeile, 4)
Call ZeileFormatieren(tempZeile, WS2)
End If
End If
Next iZeile
End Sub

Private Sub ZeileFormatieren(Zeile As Long, WS As Worksheet)
With WS.Range(WS.Cells(Zeile, 1), WS.Cells(Zeile, 2))
.Interior.Pattern = xlNone
.Font.Bold = False
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
End With
End Sub

cu
Chris

Anzeige
AW: dann eben mit VBA
22.03.2016 18:12:51
Christian
Hey Chris,
Du bist echt der Beste! Es werden die Einträge korrekt kopiert - jedoch leider noch ohne Prüfung ob die jeweilige Fragennummer schon vorhanden ist (auf Textunterschied muss nicht geprüft werden)... Kannst mir noch einen Tipp diesbezüglich geben? Auch sollte auf die Sortierung nach Fragennummer geachtet werden, denn es kann vorkommen, dass sich die Bewertung ändert und dann eine Position eingefügt werden muss. Oder immer komplett neu aufbauen? Ich habe echt keine Ahnung - sorry...
Kann man eigentlich Excel dies dauerhaft Überwachen lassen? Ich meine ohne Schaltfläche zum Aktivieren des Makros...
Hier nochmal mein File:

Die Datei https://www.herber.de/bbs/user/104543.xlsm wurde aus Datenschutzgründen gelöscht


Für wie starte ich eigentlich den Code im Private Sub? Als Makro sehe ich nichts...
Mein VBA-Kurs ist leider erst im Juni - bitte um Nachsicht ;-)
Vielen lieben Dank!
Beste Grüße,
Chrisi

Anzeige
AW: dann eben mit VBA
22.03.2016 18:43:59
ChrisL
Hi Christian
Da du geschrieben hast, dass die Bemerkungen überschrieben werden, ging ich davon aus, dass es eine einamlige Sache ist (zusammenkopieren ohne löschen).
Man könnte erweitern, dass sich die Tabelle komplett neu aufbaut (löschen und kopieren) d.h. angepasste Bemerkungen gehen verloren.
Oder man könnte mit etwas mehr Aufwand nur kopieren, was nicht manuell geändert wurde. Fraglich ob sich der Aufwand lohnt, weil sich der Sinn nicht erschliesst. Grundsätzlich bin ich für eine Trennung von Daten und Auswertung d.h. allfällige Bemerkungen im Blatt Fragen dokumentieren (falls der Ursprungszustand erhalten bleiben muss halt in der Spalte daneben).
Zum automatischen Starten von Codes gibt diverse Events/Ereignisse z.B. bei Aktivierung der Tabelle. Auch bei Change/Änderung einer Zelle, aber dann läuft der Code x-fach ab (bei jeder Zellenänderung).
Und die Prozedur ZeileFormatieren wird aus dem anderen Makro heraus aufgerufen. Direkt starten kannst du es nicht, weil die zu formatierende Zeilennummer und das zuvor definierte Arbeitblatt als Variable mit übergeben wird.
ciux
Chris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige