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

Wert in Matrix - Daten linksrechts

Wert in Matrix - Daten linksrechts
21.07.2016 17:10:03
Nilo
Hallo alle zusammen,
ich hoffe einer von euch kann mir eine Funktion schreiben die folgendes macht:
Daten in Tabelle Matrix in A1 bis I50000
Suchwert in Tabelle Suche in G18
Wenn Suchwert in Matrix gefunden dann geben alle Daten links und rechts vom Suchwert aus in Tabelle Suche in H18 bis N18
Mein Problem: ich weiß nicht in welcher Spalte der Suchwert zu finden ist.
Ich denke mit Wert gefunden dann ActiveCell.Address Offset oÄ ginge das
nur komme gerade nicht auf den richtig Weg.
Ich möchte also in G18 einen Wert eingeben und die Daten links und rechts aus der Tabelle Matrix in Tabelle Suche H18 bis N18 schreiben.
Besten Dank schon mal für Eure Hilfe.
Gruß
Nilo

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert in Matrix - Daten linksrechts
21.07.2016 17:42:28
Fennek
Hallo,
benutze "Range.find", das findet den Wert auch in größeren Bereichen. Als Beispiel:

dim rng as Range
set rng = Range("C25:P500").find("mein Suchwort)
Wie gesagt, rng ist ein Range, da geht z.B. rng.row, rng.column use
mfg
AW: danke für den Tip!
22.07.2016 11:56:48
Nilo
Hi Fennek,
danke für den Tip!
Mal gucken ob ich es hinbekomme.
Gruß
bekomme das nicht hin! Bitte um Hilfe
22.07.2016 13:19:03
Nilo
Hallo alle zusammen,
habe mich mal durchgewurschtelt aber bekomme es nicht wirklich hin.
Soll nur die Zeile kopieren wo der Wert gefunden wurde.
Hier mal mein Versuch.
https://www.herber.de/bbs/user/107173.xlsm
Gerne möchte ich wissen wie das in VBA und vielleicht auch als Formel funktioniert.
Besten Dank und Gruß
Nilo
Anzeige
AW: Wert in Matrix - Daten linksrechts
22.07.2016 14:18:38
Piet
Hallo Nilo
bei deinem Code wie du ihn im Original zeigst stimmt so einiges nicht.
Probier den unteren mal aus. Der sollte laufen, wurde von mir getestet.
zu den einzelnen Fehlern: - Set rSearch = wsSrc.Range("A2:I3")
du legst den Suchbereich auf 2 Zeilen fest, sprichst aber in deinem Text von 50.000 Zeilen
Daten in Tabelle Matrix in A1 bis I50000 - Die For Next Schleife richtet sich nach "A2:I3"
wsSrc.Range("A2:I3").Copy - Du kopierst immer aus dieser Zeile, egal wo du die Daten findest!
wsSrc.Range("A2:I3").Copy
Worksheets("Suche").Range("H18:O18")
Du kopierst bis Spalte I, und willst nur bis Spalte "O" einfügen. Das kann so nicht hinhauen!
Es waren mehrere Fehler warum das Makro so nicht laufen konnte. Bei suchen in 50.000 Zeilen
ist es besser die Find Methode zu verwenden. Eine For Next Schleife ist da echt zu langsam!!
Würde mich freuen wenn es jetzt klappt.
mfg Piet
Option Explicit      '22.7.2016   für Herber Forum
Sub kopieren_neu()
Dim rFind As Object, z As Long
Dim wsSrc As Object, AI As Long
AI = CLng(Worksheets("Suche").Range("A3"))
'belegt die Variable wsSrc als Object:  (Tabelle)
Set wsSrc = Worksheets("Matrix")
'kurzer Suchlauf (ohne Directory Vorgabe) nach ganzem Wert
Set rFind = wsSrc.Range("A:I").Find(What:=AI, After:=Range("A1"), LookAt:=xlWhole)
'If rFind Is Nothing Then Exit Sub  'Ende ohne Msg Meldung
If rFind Is Nothing Then MsgBox AI & "  No Find ": Exit Sub
z = rFind.Row  'z=Zeile in "Matrix" notieren
wsSrc.Range("A" & z & ":I" & z).Copy 'kopiert Daten im aktuelle Worksheet
Worksheets("Suche").Range("H18:p18").PasteSpecial Paste:=xlPasteValues, Transpose:=False
End Sub

Anzeige
AW: Wert in Matrix - Daten linksrechts
22.07.2016 14:40:33
Nilo
Hallo Piet,
dass die Beschreibung nicht zum Makro passte lag an CopyPaste, sorry!
Ich habe mir vorhin derart viele Makros angeguckt, in der Hoffnung,
dabei auf den richtigen Ansatz zu kommen ohne was richtiges zu Stande zu bringen.
Ich danke Dir für Deine Hilfe, läuft sehr gut.
Gruß
Nilo
AW: CLng hat Probleme mit .,-+ etc.und Leerzeichen
22.07.2016 16:19:27
Nilo
Hallo Piet,
ich nochmal!
Also es läuft alles perfekt bis wenn statt einer GanzZahl 888888888
Mischwerte auftreten zB 888 888 oder 88888888A oder 888.888
Also immer wenn Leer und oder Sonderzeichen vorkommen.
Gibt es dafür eine Möglichkeit ?
Gruß
Sicher, aber das hättest du gleich schreiben ...
23.07.2016 02:30:10
Luc:-?
…und auch in Matrix! vorsehen sollen, Nilo,
denn dann geht's eigentlich um Text, nicht um Ganzzahlen!
Das geht doch auch mit einer Fml, wobei das völlig egal ist:
Suche!H18[:O18]:=WENN(ISTNV(VERGLEICH($A3;Matrix!$A2:$I2;0));"";INDEX(Matrix!$A2:$I2;SPALTE(A1)))
Oder mit MatrixFml für alle Zellen einer Zeile auf 1×:
H18:O18: {=WENN(ISTNV(VERGLEICH(A3;Matrix!A2:I2;0));"";INDEX(Matrix!A2:I2;SPALTE(A1:H1)))}
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: ja stimmt! Was muss ich den machen wenn...
23.07.2016 23:30:02
Nilo
...wenn ich jetzt nicht nur A2:I2 habe sondern eine ganze Liste A2:I10000 (als Beispiel)
Wenn Ich A2:I3 angebe steigt die erste Formel schon aus und zeigt mir nichts mehr an!!!
Falls Du mir dann noch aufzeigen könntest wie es wäre wenn Matrix sich in einer anderen geöffneten Datei befindet könnte ich mir den Formelaufbau mal verinnerlichen.
Deine 2te Mtrx Formel verstehe ich nicht was die macht, die zeigt mir nur die erste Zahl aus der Matrix an!?
Besten Dank schon einmal im Voraus.
Gruß
Nilo
Du kennst dich offensichtlich nicht mit ...
24.07.2016 02:45:59
Luc:-?
…MatrixFmln aus, Nilo;
wenn man etwas nicht kennt, liest man in der Xl-Hilfe nach. Dort gibt's das Stichwort Matrixformel! Außerdem habe ich dazu alle Zellen geschrieben; dann muss man auch alle Zellen der ErgebnisZeile auswählen, denn es wdn ja mehrere Werte!
Ansonsten bin ich davon ausgegangen, dass du entweder zellen- oder zeilenweise vorgehen und nicht alles auf 1× übertragen willst. Das könnte evtl für die dann zu verwendende MatrixFml zuviel wdn.
Wie verweist du denn sonst auf Blätter anderer Dateien? Das musst du dann hier auch machen. Allerdings sind derartige FernBezüge störanfällig (DateiVerschiebungen u.ä.); dagegen solltest du dich dann absichern.
Morrn, Luc :-?
Anzeige
AW: Wert in Matrix - Daten linksrechts
24.07.2016 11:01:41
Piet
Hallo Nilo,
war einige Zeit beschaeftigt, habe bei Herber nicht reingeschaut.
Wenn du es per Makro lösen willst folgender Vorschlag - Aendere das Makro wie unten ab.
Mit AI as Variant setzt du den Wert auf "Variabel". Excel erkennt von selbst ob es Text
oder eine Zahl ist. Bei setzen von AI = muss du bei CLng(Range) das "CLng" entfernen!!
Dann sollte es funktionieren. mfg Piet
Dim wsSrc As Object, AI As Variant
AI = Worksheets("Suche").Range("A3")
AW: Vielen Dank ! @ Piet = 1a @Luc bitte lesen,,,
24.07.2016 14:05:45
Nilo
...
Vielen lieben Dank.
@ Piet
Läuft wir verrückt. Super Cool
@ Luc
ich weiß Du bis ein FormelCrack, daher bitte etwas Nachsicht wenn man nicht gleich alles
in kryptischen Abläufen erklären kann.
Manche Dinge kommen doch auch erst beim Vorankommen zum Vorschein.
Dinge die man so vorher nicht auf dem Schirm hatte oder die sich dann erst aus dem Workflow ableiten lassen.
Ich werde mich bemühen die MtrxFrmln zu verstehen, da hilft aber keine Rüge!
Trotzdem vielen Dank für die Hilfe.
Gruß
Nilo
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige