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

Inhalt suchen und woanders einfügen

Inhalt suchen und woanders einfügen
Karsten
Hallo...
ich glaube, was ich benötige, ist bestimmt nur mit großem Aufwand zu schaffen, aber ich frage dennoch:
In Tabelle2 sollen bestimmte Inhalte aus Tabelle1 aufgelistet werden. Die gesuchten Werte haben immer den ColorIndex = 7. Wenn ein Inhalt in einer Spalte gefunden wird, soll in Tabelle2 der Inhalt der ersten Zelle(Tabelle1) in die nächste freie Zelle in Spalte A (Tabelle2) eingefügt werden.
Zum besseren Verständnis habe ich hier ein Beispiel angefertigt. Tabelle2 ist quasi das Resultat.

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


Danke, wie immer für eure Hilfe.
Gruß
Karsten
AW: Inhalt suchen und woanders einfügen
19.11.2010 23:57:47
Uduuh
Hallo,
sind es immer 3er-Blöcke wie im Bsp.?
Gruß aus’m Pott
Udo

AW: Inhalt suchen und woanders einfügen
20.11.2010 07:59:54
Karsten
Hallo Udu,
du meinst 3 Spalten?. Nein. Alles. Spalte A u. B müssen aber nicht mit einbegriffen sein. Wenn ja, auch nicht schlimm, da steht nichts in pink.
Gruß
Karsten
AW: Inhalt suchen und woanders einfügen
20.11.2010 09:53:44
Karsten
Hallo Udu,
du bist möglicherweise schon bei dieser Sache, aber mir ist doch etwas eingefallen. Es ist Quatsch Alles bis irgendwo in die 60000'te Zelle, bistimmt mit einer Schleife, absuchen zu lassen. Die Suche sollte sich nur auf einen Bereich beziehen, der aber variabel ist. Dieser Bereich ist immer der Druckbereich. Der stellt sich nach den eingegebenen Datumswerten in A3 und A4 ein. Dazu hat mir jemand, ich weiß aber nicht mehr wer, netterweise diesen Code erstellt. Vielleicht brauchst du ihn dafür.
Gruß Karsten
Dim vntFirst As Variant, vntLast As Variant
vntFirst = Application.Match(Range("A3"), Range("A9:A" & Rows.Count), 0)
If IsNumeric(vntFirst) Then
vntLast = Application.Match(Range("A4"), Range("A9:A" & Rows.Count), 0)
If IsNumeric(vntLast) Then
Range(Cells(vntFirst + 8, 1), Cells(vntLast + 8, 1)).NumberFormat = "dd/mm/yy"
End If
End If
Anzeige
Ganz schön anspruchsvoll für kaum Kenntnisse,...
20.11.2010 00:10:45
Luc:-?
…Karsten…
Da es offensichtl um mehrfarbige Texte geht, wirst du ohne VBA nicht auskommen. In solchen Fällen ist der Font.ColorIndex = Null. Also darf man nicht nur den Font.ColorIndex vgl, sondern muss auch noch If IsNull(…Font.ColorIndex) Then fragen und dann den Zellinhalt zeichenweise vgl (Characters-Methode).
Wahrscheinlich ist dir bei deinem Kenntnisstand am ehesten mit einer udFkt gedient. Die könntest du dann ganz normal in Formeln einsetzen.
Gruß + schöWE, Luc :-?
AW: Ganz schön anspruchsvoll für kaum Kenntnisse,...
20.11.2010 10:00:23
Karsten
Hallo Luc :-?,
ich denke schon, dass es nur mit VBA geht. Aber, ich weiß wirklich nicht, wie die Abfragen codemäßig erstellt werden. Von diesen Dimensionen bin ich noch zu wei weg. Es geht übrigens nur um die Farbe Pink (ColorIndex = 7).
Was meinst du mit udFkt?
Gruß
Karsten
Anzeige
AW: Ganz schön anspruchsvoll für kaum Kenntnisse,...
20.11.2010 11:27:40
carstenas
Hallo Karsten
was Luc mit udfkt meint ist eine User Definierte Funktion eine Funktion schreiben in VBA.
Gruß Carsten
AW: Ganz schön anspruchsvoll für kaum Kenntnisse,...
20.11.2010 11:42:30
Karsten
Hallo Carsten,
danke, wird mir aber so nicht weiterhelfen.
Gruß
Karsten
AW: Inhalt suchen und woanders einfügen
20.11.2010 19:00:59
Daniel
Hi
Besonders aufwendig ist das nicht, aber es geht definitiv nur per Makro.
hier mal ein Code für diese Aufgabe, passend und getestet mit deiner Beispieldatei.
Anzahl von Spalten und Zeilen sind jedoch variabel.
Sub FarbeSuchen()
Dim Erg As String
Dim sp As Long
Dim ze As Long
Dim sh1 As Worksheet, sh2 As Worksheet
Dim Zelle As Range
Dim i As Long
Set sh1 = Sheets("Tabelle1")
Set sh2 = Sheets("Tabelle2")
sh2.Cells.Clear
For sp = 1 To sh1.UsedRange.Columns.Count
sh2.Cells(sp, 1).Value = sh1.Cells(1, sp)
Erg = ""
For Each Zelle In Range(sh1.Cells(2, sp), sh1.Cells(Rows.Count, sp).End(xlUp))
If IsNull(Zelle.Font.ColorIndex) Then
For i = 1 To Len(Zelle.Value)
If Zelle.Characters(i, 1).Font.ColorIndex = 7 Then
Erg = Erg & Mid(Zelle.Value, i, 1)
End If
Next
Erg = Erg & ", "
End If
Next
If Erg  "" Then sh2.Cells(sp, 2).Value = Left(Erg, Len(Erg) - 2)
Next
End Sub
Gruß, Daniel
Anzeige
Schön, dass du meine Hinweise beachtet/...
20.11.2010 19:12:30
Luc:-?
…umgesetzt hast, Daniel;
bliebe nur noch zu klären, ob auch mal der ganze Ausdruck „Pink“ sein kann, dann bräuchte es noch ein ElseIf… ;-)
Gruß + schöSo, Luc :-?
AW: Schön, dass du meine Hinweise beachtet/...
20.11.2010 19:30:43
Karsten
Hallo Luc,
Pink ist die absolute Ausnahme.
Gruß
Karsten
AW: Inhalt suchen und woanders einfügen
20.11.2010 19:29:28
Karsten
Hallo Daniel,
besten Dank. In der Beispieldatei funktioniert es einwandfrei.
In meiner richtigen Mappe hört der Makro nicht auf zu arbeiten oder ich breche eben ab (mit esc). Ich kann es nicht herauslesen - hast du den Suchbereich dem Druckbereich angepasst? Wie passe ich die Spalten an.
Ich hatte es erst nicht mit in die Frage geschrieben, erst später als Antwort auf Udu.
Die Suche sollte sich nur auf einen Bereich beziehen, der aber variabel ist. Dieser Bereich ist immer der Druckbereich. Der stellt sich nach den eingegebenen Datumswerten in A3 und A4 ein. Dazu hat mir jemand, ich weiß aber nicht mehr wer, netterweise diesen Code erstellt. Vielleicht brauchst du ihn dafür.
Gruß Karsten
Dim vntFirst As Variant, vntLast As Variant
vntFirst = Application.Match(Range("A3"), Range("A9:A" & Rows.Count), 0)
If IsNumeric(vntFirst) Then
vntLast = Application.Match(Range("A4"), Range("A9:A" & Rows.Count), 0)
If IsNumeric(vntLast) Then
Range(Cells(vntFirst + 8, 1), Cells(vntLast + 8, 1)).NumberFormat = "dd/mm/yy"
End If
End If
Anzeige
AW: Inhalt suchen und woanders einfügen
20.11.2010 19:53:35
Daniel
HI
naja, ich kenne deine Datei nicht, daher ist es schwer sowas so zu ergänzen, daß der Code ohne dein weiteres Zutun problemlos funktioniert.
wenn das ganze nur in einem bestimmten Zeilenbereich ablaufen soll, und die die Start- und Endzeile mit den Variablen vntFirst und vntLast beschrieben werden, dann musst du diese Zeile
For Each Zelle In Range(sh1.Cells(2, sp), sh1.Cells(Rows.Count, sp).End(xlUp))

so ändern:
For Each Zelle In Range(sh1.Cells(vntFirst, sp), sh1.Cells(vntLast, sp))

den Code für die Ermittlung dieser beiden Werte musst du natürlich vorher in den Code einfügen.
trotzdem darfst du von diesem Code keine Geschwindigkeitswunder erwarten, diese Art der Auswertung braucht halt seine Zeit.
Gruß, Daniel
Anzeige
AW: Inhalt suchen und woanders einfügen
20.11.2010 20:05:15
Karsten
Hallo Daniel,
jetzt geht es genau an der Stelle nicht weiter. "Anwendungs- oder objektdefinierter Fehler"
Dim vntFirst As Variant, vntLast As Variant
hab ich drüber geschrieben.
Was könnte es nun sein?
Gruß
Karsten
AW: Inhalt suchen und woanders einfügen
20.11.2010 20:35:41
Daniel
Hi
keine Ahnung.
ich bin weder Hellseher, noch kann ich mich übers Internet auf deinen Rechner einloggen um mir die Datei anzusehen.
Gruß, Daniel
AW: Inhalt suchen und woanders einfügen
20.11.2010 20:10:11
Karsten
Ach so:
wie kann ich die Spalten A-C von dieser Prozedur befreien?
Gruß
Karsten
AW: Inhalt suchen und woanders einfügen
20.11.2010 20:33:30
Daniel
in dem du die erste Schleife entsprechend gestaltest:
For sp = 4 To sh1.UsedRange.Columns.Count
Gruß, Daniel
Anzeige
AW: Inhalt suchen und woanders einfügen
20.11.2010 21:29:40
Karsten
Hallo Daniel,
mit der Spalte habe ich begriffen. Allerdings gibt es einen Schönheitsfeler, wenn vorher eine andere Farbe im Spiel war (ein Komma). Siehe bitte das Beispiel.
https://www.herber.de/bbs/user/72406.xls
Gruß
Karsten
AW: Inhalt suchen und woanders einfügen
20.11.2010 21:42:09
Daniel
HI
das abzufangen ist doch nicht so schwer, du darfst den von mir geposteten Code gerne abändern und korrigieren, wenn er nicht das gewünschte Ergebnis liefert:
Sub FarbeSuchen()
Dim Erg As String
Dim Erg1 As String
Dim sp As Long
Dim ze As Long
Dim sh1 As Worksheet, sh2 As Worksheet
Dim Zelle As Range
Dim i As Long
Set sh1 = Sheets("Tabelle1")
Set sh2 = Sheets("Tabelle2")
sh2.Cells.Clear
For sp = 1 To sh1.UsedRange.Columns.Count
sh2.Cells(sp, 1).Value = sh1.Cells(1, sp)
Erg = ""
For Each Zelle In Range(sh1.Cells(2, sp), sh1.Cells(Rows.Count, sp).End(xlUp))
If IsNull(Zelle.Font.ColorIndex) Then
 Erg1 = ""
For i = 1 To Len(Zelle.Value)
If Zelle.Characters(i, 1).Font.ColorIndex = 7 Then
Erg1 = Erg1 & Mid(Zelle.Value, i, 1)
End If
Next
If Erg1  "" Then Erg = Erg & Erg1 & ", "
End If
Next
If Erg  "" Then sh2.Cells(sp, 2).Value = Left(Erg, Len(Erg) - 2)
Next
End Sub
Gruß, Daniel
Anzeige
AW: Inhalt suchen und woanders einfügen
20.11.2010 22:24:55
Karsten
Hallo Daniel,
Danke, aber du überschätzt da meine Fähigkeiten. Wegen der Bereichssache habe ich jetzt noch mal ein Beispiel in höchst abgespeckter Form gepostet, wegen der zulässigen 30 Kb. Ich hoffe es reicht dir. In Tabelle1 ist ein Worksheetcode der den Bereich, der abgeklappert werden soll, einstellt.
Vielleicht kannst du dir jetzt ein Bild machen.
https://www.herber.de/bbs/user/72408.xls
Gruß
Karsten
AW: Inhalt suchen und woanders einfügen
21.11.2010 00:21:54
Daniel
Hi
1. es sind 300kb die man hochladen darf
2. hab ich keine Lust, meine Makros x-mal nachzubessern, nur irgendwie nicht in der Lage seid, eine Beíspieldatei zu erstellen, die euren Echtdaten entspricht.
3. ist das jetzt nicht so schwer, aus den gegebenen Infos das passende Makro zusammenzubasteln. Im einen Makro siehst du, wie du Start- und Endzeile ermittelst und wie du diese Informationen dann in meinem Makro verwendest, habe ich dir auch gezeigt. Du solltest jetzt in der Lage sein, daraus ein gemeinsames Makro zu erstellen. wenn nicht, solltst du nicht mit Makros arbeiten, sondern mit Methoden, die du kennst und beherrschst.
Gruß, Daniel
Anzeige
...bzw dich 4. nach fertigen allgemein...
21.11.2010 03:10:39
Luc:-?
…anwendbaren Fktslösungen umsehen, Karsten,
es soll nämlich Leute geben, die solche xlErgänzungen (meist in AddIn-Form) schreiben. In den Foren wdn dir zumeist Insellösungen angeboten, die du oftmals selber anpassen kannst bzw musst…
Gruß Luc :-?
AW: Inhalt suchen und woanders einfügen
21.11.2010 09:40:04
Karsten
Hallo Daniel,
zu 1.
Da habe ich mich um eine Null geirrt. Reines Versehen.
zu 2.
Nach meiner Erfahrung, dauert es bei Anfragen, die zu komplex sind, oftmals ewig, bis sie Verstanden werden, wenn überhaupt. Wenn der Fragesteller einschätzen könnte, was für den Bearbeiter wichtig ist, wäre er höchtwahrscheinlich in der Lage sein Code selbst zu schreiben. Aus meiner Sicht ist eine gewisse Salami-Taktik ganz verständlich. Aus deiner Sicht logischer Weise nicht.
zu 3.
Das klingt reichlich verärgert und ich muß die widersprechen. Um Auto fahren zu können muß ich nicht mit den Details des Motors vertraut sein. Um ein Makro zu betätigen, nicht über dessen Codes bescheidwissen.
Ich hab es dennoch irgendwie zum Laufen bekommen. Mit:
https://www.herber.de/forum/messages/1187985.html
lag ich falsch.
Trotzdem nochmal Danke u. einen schönen Sonntag.
Gruß
Karsten
Dim lngFirst As Long, lngLast As Long
With Sheets("Lehrbericht")
lngFirst = .Range(.PageSetup.PrintArea).Rows(1).Row
lngLast = .Range(.PageSetup.PrintArea).Rows(.Range(.PageSetup.PrintArea).Rows.Count).Row
.PageSetup.PrintArea = .Range(.Cells(lngFirst, ActiveCell.Column), .Cells(lngLast, ActiveCell.Column)).Address
End With
Dim Erg As String
Dim Erg1 As String
Dim sp As Long
Dim ze As Long
Dim sh1 As Worksheet, sh2 As Worksheet
Dim Zelle As Range
Dim i As Long
Set sh1 = Sheets("Lehrbericht")
Set sh2 = Sheets("Vorspiel")
sh2.Cells.Clear
For sp = 4 To sh1.UsedRange.Columns.Count
sh2.Cells(sp, 1).Value = sh1.Cells(1, sp)
Erg = ""
'For Each Zelle In Range(sh1.Cells(2, sp), sh1.Cells(Rows.Count, sp).End(xlUp))
For Each Zelle In Range(sh1.Cells(lngFirst, sp), sh1.Cells(lngLast, sp))
If IsNull(Zelle.Font.Colorindex) Then
Erg1 = ""
For i = 1 To Len(Zelle.Value)
If Zelle.Characters(i, 1).Font.Colorindex = 7 Then
Erg1 = Erg1 & Mid(Zelle.Value, i, 1)
End If
Next
If Erg1 "" Then Erg = Erg & Erg1 & ", "
End If
Next
If Erg "" Then sh2.Cells(sp, 2).Value = Left(Erg, Len(Erg) - 2)
Next
Anzeige
AW: Inhalt suchen und woanders einfügen
21.11.2010 10:12:07
Daniel
Hi Karsten
meiner Ansicht nach ist das Forum ein Ort, wo man Hilfestellung zu Problemen und indealerweise "Hilfe zur Selbsthilfe" bekommt, es ist nicht dazu gedacht, für umsonst fertige Lösungen zu liefern.
Wenn du das Autofahren ansprichst, nein, du musst nicht wissen, wie der Motor funktioniert, aber du kannst dich nicht einfach ins Auto setzen, losfahren und dann mit 200 kmh auf der Autobahn im Autofahrerforum nachfragen wo die Bremse ist.
nein, du musst vorher 2000 Euro auf den Tischlegen, in die Fahrschule gehen und dann erst noch eine praktische und theoretische Prüfung machen, um zu zeigen, daß du das Autofahren beherrschts und die wichtigsten Regeln kennst.
Ich meine, wenn du als Autofaherer fragst, wie du am besten von Hamburg nach München kommst, dann wird es schwierig, wenn man dir erklären muss, wie ein Schulterblick geht und wie man vom ersten in den zweiten Gang schaltet.
Außerdem, wer fertige Lösungen ohne Eigenleistung haben will, soll halt die entsprechende Kohle auf den Tisch legen und einen Professionellen Programmierer beauftragen.
Desweiteren solltest du bedenken, daß bei selbstprogrammierten Makros du gegenüber deinem Chef oder Kunden dafür verantwortlich ist, daß er funktioniert und fehlerfrei ist.
Von daher würde ich niemals Code, den ich nicht verstanden habe, hier aus dem Forum rauskopieren und verwenden.
Schließlich habe ich keine Garantie, daß ich für spätere Korretkuren und Erweiterungen auch wieder Hilfe aus dem Forum bekommen.
Aber schließlich hast du es ja selber geschafft und was dazu gelernt.
Manchmal ist zur persönlichen Weiterentwicklung ein Tritt in den Hintern besser als ständig den Arsch nachgetragen zu bekommen.
Gruß, Daniel
AW: Inhalt suchen und woanders einfügen
21.11.2010 11:21:15
Karsten
Hallo Daniel,
das, was du als fertige Lösung bezeichnest ist nur ein Bruchteil einer komplexen Mappe. Etwas habe ich mir schon angeeinet z.B. wie die Codes miteinander funktionieren / harmonieren.
Für eine fertige Lösung, die ich mal brauchte, habe ich schon mal jemand 20,- auf ein Spendenkonto überwiesen. Ganz so ist es nicht, wie du vielleicht denkst...
Was ich hier mit und ohne eure Hilfe erstelle, nutze ich ausschließlich für mich und ich komme auch damit klar. Ein anderer würde damit nicht klar kommen und ich hätte auch keine Lust dann die Hotline zu spielen.
Ich hab das Gefühl, manch einer sucht eine Art Selbstbestätigung ganz auf seine Art in dieser Anonymität. Wo sonst will man zeigen, dass man diese Kenntnisse besitzt?
Gruß
Karsten

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige