Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: WilhelDerTell am Mai 13, 2014, 15:53:40 Nachmittag
-
Guten Tag,
habe mich gerade hier angemeldet, weil ich an einem Problem verzweifle.
Ich arbeite derzeit ein Excel Dokument aus, mit dem Evaluationen durchgeführt werden sollen.
Im ersten Arbeitsblatt sammle ich dafür die Rohdaten.
| A (Produktbezeichnung) | B (Bewertung Design) | C (Bewertung Handling) | D (Anmerkung) |
| 4C20 | 3 | 2 | Hätte ich gerne in grün! |
| 4C10 | 0 | 1 | Lieber Knöpfe als Hebel |
| 4C20 | 1 | 1 | Sehr unhandlich! |
| 4C20 | 2 | 0 | |
| 4C30 | 2 | 3 | Top Gerät |
In der Auswertung möchte ich nun, alle Kommentare zu Produkt 4C20 verketten.
Das Zusammenzählen der Bewertungspunkte habe ich mit zählenwenns() gelöst. Bei der Verkettung der Kommentare fehlt mir aber die Idee.
Ich suche also theoretisch etwas wie =Wenn(A:A=4C20; Verkette(D:D))
Schon jetzt vielen Dank für jedwede Hilfe und herzliche Grüße
Jan
-
Hallo Jan,
die einfachste Lösung stelle ich mir so vor:
* Setze in der Datei einen Autofilter für die Produktnummer
* Kopiere die gefilterten Daten in ein getrenntes Blatt
* Füge die Formeln ein, wie in Tabelle2 zu sehen.
Natürlich lässt sich das auch per VBA lösen.
-
Hallo Günther,
schon einmal vielen Dank für die Antwort.
Das ist die Art und Weise, über die es bisher läuft.
Ich wurde gebeten, den Vorgang zu automatisieren, da viele der Kolleginnen und Kollegen schon mit diesen Arbeitsschritten nicht zurechtkommen.
Eine mögliche Alternative ohne VBA Programmierung kommt Dir auf Anhieb nicht in den Sinn?
Dann werde ich mich wohl mal wieder da rein fuchsen. Lang lang ist's her :)
-
Mir ist bewusst, dass der folgende Code für die meisten total gruselig aussehen muss, aber seht es mir bitte nach; ich habe mich 8 Jahre lang nicht mehr mit dem Thema befasst :)
Natürlich funktioniert der Code auch nicht.
Kann mir hier jemand bei den Korrekturen helfen?
Sub kommentar()
Dim rohdaten As Worksheet
Dim auswertung As Worksheet
Dim i As Integer
Dim a As String
Dim b As String
rohdaten = Worksheets("Rohdaten")
auswertung = Worksheets("Auswertung")
i = 1
For i = 1 To 0
If rohdaten.Cells(i, 1) = 110 Then
a = rohdaten.Cells(i, 8)
b = auswertung.Cells(37, 2) & a
i = i + 1
auswertung.Cells(37, 2) = b
Else
If rohdaten.Cells(i, 1) = "" Then
i = 0
Else
If rohdaten.Cells(i, 1) <> 110 Then
i = i + 1
End If
End If
End If
Next
End Sub
Viele Grüße
Jan
-
Hallo Jan,
na, so gruselig ist das doch gar nicht ...
Die wichtigsten Regeln hast du eingehalten: Code einrücken, Variablen deklarieren
Bleibt noch ganz oben, erste Zeile: Option Explicit, damit der ompiler Schreibfehler in den Variablen erkennt.
So, da ich praktisch schon im Auto sitze und auf dem Weg zum Kunden bin, einige Dinge, die mir auf den ersten Blick aufgefallen sind:
Set rohdaten = Worksheets("Rohdaten")
Set auswertung = Worksheets("Auswertung")
i = 1
For i = 1 To 01. und 2. Zeile: das Set fehlt, es handelt sich um Objekte
3. Zeile -> überflüssig, tut aber nicht weh :)
4. Zeile: "For i = 1 To 0" da ist die Null fehl am Platz. Wenn schon rückwärts, dann mit "Step -1". Hier gehört aber eine Zahl rein, die der letzten zu durchsuchenden Zeile entspricht (muss nicht die Zeilennummer sein sondern die Anzahl)
Mit F8 kannst du den Code schrittweise durchlaufen und dann Fehler suchen
Viel Erfolg, aber es kann durchaus sein, dass da noch mehr Ungereimtheiten drin sind.
-
Wunderbar, jetzt funktioniert es.
Vielen Herzlichen Dank Günther.
Habe es nun mit einer While-Schleif gemacht.
Ein letztes Problem habe ich aber noch. Undzwar werden momentan auch leere Zellen verknüpft, sodass unnötige leere Zeilen ausgegeben werden.
Daher möchte ich nicht nur die Werte der 8. Spalte miteinander verknüpfen, sondern vorher überprüfen, ob in der 8. Spalte überhaupt ein Wert vorhanden ist.
Füge ich aber bei der If Anweisung eine weitere Bedingung hinzu, also statt
If rohdaten.Cells(i, 1) = auswertung.Cells(1, 3) Then
If rohdaten.Cells(i, 1) = auswertung.Cells(1, 3) And rohdaten.Cells(i, 8) <> "" Then
bleibt die Funktion scheinbar in der Schleife hängen und Excel schmiert ab.
Ich kann mir das nicht erklären.
Selbiges Problem tritt auch auf, wenn ich statt "and" mehrere If-Funktionen verschachtele.
Hier der funktionierende Code:
Sub kommentar()
Dim rohdaten As Worksheet
Dim auswertung As Worksheet
Dim i As Integer
Dim a As String
Dim b As String
Set rohdaten = Worksheets("Rohdaten")
Set auswertung = Worksheets("Auswertung")
i = 1
Do While rohdaten.Cells(i, 1) <> ""
If rohdaten.Cells(i, 1) = auswertung.Cells(1, 3) Then
a = rohdaten.Cells(i, 8)
b = auswertung.Cells(41, 2) & Chr(10) & a
i = i + 1
auswertung.Cells(41, 2) = b
Else
i = i + 1
End If
Loop
End Sub
-
Hallo Jan,
hmmm, versuche einfach einmal, eine kleine Mustertabelle mit anonymisierten Daten (wie im ersten Beitrag, nur als *.xls*) aber alles in der richtigen Spalte einstellen. Dann fällt mir die Hilfe leiter. Ich abstrahiere nicht so gerne, weil meine Denke oft anders ist als die Realität vor Ort ;).
-
Da muss ich nicht viel anonymisieren :)
Auf Tabellenblatt zwei (Auswertung) gibt man, in der ersten Zeile, manuell die Nummer des Heftes ein, das man evaluieren möchte.
-
So Jan,
nach einer kleinen Anpassung sollte das Ergebnis stimmen. Falls "Ja", dann kannst du natürlich den auskommentierten Code löschen.
-
Hallo Günther,
vielen Dank, es funktioniert.
Komme erst jetzt wieder zum Antworten, weil ich übers Wochenende im Ausland war.
Sieht zwar vollkommen anders aus als mein Code, aber nach konzentriertem Lesen erschließt sich mir die funktionsweise :)
Nochmals herzlichen Dank und eine sonnige Woche!
Jan