Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1480to1484
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

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

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...

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

370 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige