2k Aufrufe
Gefragt in Datenbanken von
Hallo Leute,
ich benötige hierbei eure hilfe.
Entweder über Makro oder nicht ist mir beides recht.
Ich habe es zuerst mit der Wenn funktion probiert aber ohne erfolg.

Folgenes Problem: In meiner Exceltabelle soll nach geschaut werden, wenn zum beispiel in Zelle A5 ein Text steht dann soll zum Beispiel in Zelle B5 "Ja Artikel ist vorhanden" ... Wenn in Zelle A5 kein Text steht dann soll in Zelle B5 "Keine Artikelnummer vorhanden" stehen.
Desweiteren um den Inhalt in Zelle A5 zu füllen ist in einer anderen Tabelle (Datenbank) die Artikelbeschreibungen zum Beispiel von A1:A10 in jeder Zelle unterschiedliche Artikelbeschreibungen hinterlegt. Von B1:B10 stehen in jeder Zelle eine Nummer.Jetzt soll gesucht werden.
Datenbank
A1 (Text) B1 (ArtNr.123)
A2 (Text) B2 (ArtNr.456) usw. bis zum Beispiel bis A10 B10.
Ausgabe Tabelle
Jetzt wird in A1 die Art.Nr.8889 eingetippt. Dann müsste A5 Leer bleiben und in B5
müsste stehen keine Artiklenummer. Gibt jedoch in A1 die Nummer 123 ein, dann müsste in A5 die Artikelbeschreibung stehen (Text) und in B5 "Ja Artikel ist vorhanden" stehen.

So wer kann mir dabei helfen
Gruß Hajo

11 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Hajo,

deine Datenbank ist ungünstig aufgebaut. Stünde die Artikelnummer vor der Beschreibung, so könnte man die Beschreibung einfach mit SVERWEIS suchen.

Wenn ich dich richtig verstanden habe, müsste in A5 die folgende Formel stehen:

=WENNFEHLER(INDIREKT("Tabelle2!A" & VERGLEICH(A1;Tabelle2!B1:B10;0));"")

und in B5

=WENN(A5="";"Keine Artikelnummer vorhanden";"Ja, Artikel ist vorhanden")

(Formeln für Excel 2007 oder höher).
Die Namen für die Tabelle, in der deine Datenbank steht, musst du noch entsprechend anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,

vielen Dank für den ersten Tipp. Hat aber leider nicht ganz so geklappt wie ich es wollte. Wie würde es per Marko aussehen?
Und wie kann ich per Marko die Daten aus einer Exceltabelle in einen neuen Reiter hinnein kopieren?

Beispiel: in die Datei Kunde.xls sollen immer neue Reiter Angelegt werden z.B Kund Süddeutschland Kunde Norddeutschland.
Die Informationen kommen immer aus einer anderen Exceldatei Info.xls. z.B.

Gruß Hajo
0 Punkte
Beantwortet von
Hallo Leute,

ich habe hier mal ein Makro und komme damit nicht weiter.
Insgesamt habe ich 47 Reiter angelegt und mit dieser Marko liest er mir nur die Daten bis zum Reiternummer 19 ein. Was kann ich hierbei verändern?

Sub DATENBANK()
Dim ws As Worksheet
Application.ScreenUpdating = False


Worksheets("Tabelle1").Select
Rows("2:65000").Delete Shift:=xlUp
Range("A2").Select

For Each ws In Worksheets
If Left(ws.Name, 3) = "MSN" Then
Worksheets(ws.Name).Select
Range("A2:R" & Range("A2").End(xlDown).Row).Copy
Worksheets("Tabelle1").Select
Range("A" & Range("A65000").End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
Next ws

Application.ScreenUpdating = True
End Sub



Gurß Hajo
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Hajo,

eigentlich sollte es funktionieren.
Aber probier mal diese Version:

Sub DATENBANK()
Dim ws As Worksheet

Application.ScreenUpdating = False

With Worksheets("Tabelle1")
.Range(Cells(2, 1), Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)).EntireRow.Delete xlShiftUp
End With

For Each ws In Worksheets

If Left(ws.Name, 3) = "MSN" Then

With Worksheets(ws.Name)
.Range("A2:R" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy
End With

With Worksheets("Tabelle1")
.Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With

End If

Next ws

Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo Hajo,

dein Makrocode suggeriert, dass du noch mit einer älteren Excel-Version arbeitest, die WENNFEHLER nicht unterstützt. Die Formel für A5 müsste dann, leicht angepasst werden:

=WENN(ISTFEHLER(INDIREKT("Tabelle2!A" & VERGLEICH(A1;Tabelle2!B1:B10;0)));"";INDIREKT("Tabelle2!A" & VERGLEICH(A1;Tabelle2!B1:B10;0)))

Das Makro selbst sieht an sich i.O aus. Hast du schon überprüft:

[list] ob alle Sheetnamen mit MSN beginnen
[list] ob die Gesamtzahl aller Datensätze aller Sheets > 65536 ist und somit Tabelle 1 nichts mehr aufnehmen kann.
[list] ob's funktioniert wenn du die Zeile Application.ScreenUpdating = False ausnahmsweise mal weglässt
[list] ob das Makro in der gleichen Arbeitsmappe enthalten ist, in der auch deine Daten stehen? Evtl. ist
For Each ws In Worksheets durch For Each ws In ActiveWorkbook.Worksheets oder For Each ws In Workbooks("Mappe1.xls").Worksheets zu ersetzen.
[list] ob irgendeine Fehlermeldung kommt mit der man etwas anfangen kann? An welcher Stelle hängt's denn?
[/list]

Vielleicht hilft dir ja auch schon die Variante von M.O. weiter

Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo M.O.

das hat soweit sehr gut geklappt, danke Dir.
Ich hätte da noch die Frage obe es fortlaufend auch funktioniert, wenn ich weitere Reiter mit MSN 48,49,50,....60 usw. erstelle?
Für die Zukunft werden immer mehr Reiter angelegt.

Nach dem ich alle Daten aus den Reitern 1 bis 47 in einen Tabelleblatt 1 kopiert habe, möchte ich gerne in dem Tabellenblatt Output in der Spalte A1:A100 folgende Daten hinein kopiert haben. Und das auch per Makro.

Es soll nähmlich genau immer die Spalte B1:B100 aus einer komplett neuen Exceldatei kopiert werden.

Beispiel: Die Exceldatei Datenbank.xlsx
beinhaltet die Reiter (Output; Tabelle 1; und die 47 weiteren MSN Reiter von 1 bis 47). Die neue Exceldatei z..B. Kunde1.xlsx beinhaltet den Reiter Kundennummer.

Dort stehen die Kunden nummern in Spalte B1:B100. Genau diese Spalte will ich per Makro mit einem Buttom in mein Tabellenblatt Output der Exceldatei Datenbank kopiert haben.

Die Kundennummer immer ändern sich ständig. Bedeutet genau das ich immer neue Exceldateien Kunde1, Kunde 2....usw. erhalte. Wenn ich also eine neue Exceldatei z.B. Kunde 3.xlsx erhalte, sollte die Makro aus der Exceldatei Kunde3.xlsx die Spalte B1:B100 in die Exceldatei Datenbank.xlsx Tabellenblatt Output in die Spalte A1:A100 Kopieren und gleichzeitig die Nummern von Kunde 2 überschreiben.

Muss ich dafür ein neues Modul erstellen oder schreibe ich es in das Modul 1 wo bereits die Marko zur Sammlung der Daten aus den Reitern steht hinein?

Gruß Hajo
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Hajo,

das Makro sollte auch bei der Erweiterung der Mappe funktionieren.

Prinzipiell kannst du Daten aus einer Mappe in eine oder mehrere andere Arbeitsmappen kopieren.
Allerdings müssen die Namen der Mappen, in die die Daten kopiert weden sollen, bekannt sein, oder die ensprechenden Mappen müssen in einem gemeinsamen Verzeichnis gespeichert sein, so dass man dieses Auslesen kann und dann die einzelnen Mappen nacheinander öffnen kann.

Ob du das Makro in ein neues Modul oder in das vorhandene Modul schreibst, bleibt dir überlassen. Ich würde es - wegen der Übersicht - in ein neues Modul schreiben.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

es hat geklappt. Ich konnte über die Marko meine Daten aus den einzelnen Reiter in dem Tabellenblatt 1 Achrivieren. In dem Tabellenblatt 1 wurden die Daten der Reiter vonn 1 bis 32 in Zeile 2 bis 1500 kopiert. Soweit so gut. Nur komischerweise wurden die restlichen Daten ab Reiter 33 bis 47 in das Tabellenblatt 1 erst ab Zeile 4000 hinein kopiert. Also sind 2500 Zeilen Leer bis wieder die nächsten einträge kommen. Was kann ich tun?


Gruß Hajo
0 Punkte
Beantwortet von
Hallo Leute,

hat jemand außerdem einen Tipp wie ich die Fehlermeldung #NV
durch einen von mir Definierten Text ersätzen kann?

Gruß Hajo
0 Punkte
Beantwortet von
Hallo

zu AW 8: Wahrscheinlich hast du irgendwo in Tabelle 32 sehr weit unten ein Leerzeichen. Prüfe mit STRG + Ende und lösche dann alle Zeilen oberhalb bis zum eigentlichen Tabellenende.

zu AW 9: =WENN(ISTNV(DeineFormel);"Hier ist ein Fehler!";nochmal DeineFormel)

Gruß Mr. K.
...