Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Vereinfachung einer Formel zur Aufzählung
#1
Hallo,
ich habe eine größere Excel-Tabelle und möchte Bezüge zwischen den einzelnen Spalten herstellen.
In Spalte BN finden sich immer verschiedene, durch Semikolon und Leerzeichen voneinander getrennte Zahlen. Die Daten in Feld BN21 sehen z.B. so aus: 008; 009; 014; 017
In Spalte BR findet sich immer eine Zahl. Feld BR21 sieht z.B. so aus: 020
Insgesamt gibt es etwa 400 Zeilen.
Ich möchte jetzt, dass mir in der Spalte BQ immer, wenn in Spalte BN eine bestimmte Zahl vorkommt, die Zahl, die sich in der entsprechenden Zeile in Feld BR befindet, ausgegeben wird, und wenn die Zahl in BN mehrfach vorkommt, die Zahlen aus BR in BQ aneinandergereiht werden. Das Ergebnis für BQ21 sollte beispielsweise sein: 024; 029; 034; 039; 043; 044; 052; 055; 058; 074; 075; 077; 086; 097; 100; 135; 156; 207; 217; 293; 326; 374
Mit der Formel =WENN(ISTZAHL(FINDEN("021";BN2));BR2;"") &";"& WENN(ISTZAHL(FINDEN("021";BN3));BR3;"") bekomme ich eine Aneinanderreihung zwar hin, allerdings müsste ich die Formel dann knapp 400 mal aneinanderreihen und hätte am Ende zu viele Semikolons hineinander. 
Wie lässt sich die Formel vereinfachen, damit nur eine einmalige händische Eingabe erforderlich ist und die Formel auf die anderen Zeilen übertragen werden kann?
Danke und viele Grüße
tzgonline
Antworten Top
#2
Hallo,

bitte lade mal eine Beispieldatei hoch.
Gruß Jonas
Antworten Top
#3
Hallo t...,

in Office365 könnte man das in einer Formel, die die Funktion "TEXTVERKETTEN" nutzt zusammenstellen.

Da Excel 2010 diese Funktion aber noch nicht kennt, schlage ich vor eine UDF zu schreiben.

Eine UDF (= user defined function) ist ein in VBA geschriebenes Programm, dass vom Anwender wie jede andere Excel-Funktion (zB. "SUMME") aufgerufen werden kann.

Wenn das für dich akzeptabel ist, lade doch bitte eine Beispieldatei hoch, in der du mindestens einmal das Wunschergebnis manuell zusammengestellt hast.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#4

.xlsx   Beispieldatei.xlsx (Größe: 94,73 KB / Downloads: 9)

Hallo,
danke schon mal für die Antworten. 
Anbei eine Beispieldatei. In Feld BS17 habe ich die Formel ausprobiert, um die es mir geht.
Die Originaltabelle hat ca. 400 Zeilen.
Viele Grüße
tzgonline
Antworten Top
#5
Hallo t...,

in der Anlage die Datei mit der UDF "TzgOnline".

Du must die Funktion "Public Function TzgOnline" nur in ein allgemeines Modul deiner Datei kopieren.

Die Parameter sind:
1. der zu suchende Text (oder ein Verweis auf eine Zelle in der der Text steht)
2. der Bereich in den die zu durchsuchenden Zellen sind
3. der Bereich in dem der auszugebende Text ist.


ps.
In deinen Beispielen hattest du dich mehrfach (auch in Zeile 17) mit der ID und der Zeilennummer vertan.


Angehängte Dateien
.xlsm   TzgOnline.xlsm (Größe: 94,92 KB / Downloads: 6)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • tzgonline
Antworten Top
#6
Hallo, Ego,

vielen Dank für die Funktion!
Wie gesagt habe ich so etwas leider noch nie gemacht und bekomme es nun nicht hin, diese Funktion einzufügen.

Ich habe jetzt

Public Function TzgOnline()
TzgOnline = 'C:\Program Files (x86)\Microsoft Office\Office14\LIBRARY\Analysis\FUNCRES.XLAM'!TzgOnline(BT3;$BP$2:$BP$400;$BT$2:$BT$400)
End Function

in ein allgemeines Modul eingefügt, doch es erscheint die Fehlermeldung "Fehler beim Kompilieren. Erwartet Ausdruck" mit Bezug auf das ' beim Eingeben.

Wo muss ich hier noch etwas ändern?

Danke und viele Grüße
tzgonline
Antworten Top
#7
Hallo t...,

sorry, da war ich gestern wohl zu müde. Ich hatte die Funktion ins falsche Projekt eingebaut, daher war sie nicht in der hochgeladenen Datei.
Hier ein neuer Versuch.

Zum Übernehmen in deine Originaldatei:

1) Diese Beispieldatei und deine Originaldatei in Excel öffnen.
2) Mit Alt+F11 das VBA-Fenster öffnen.
   (Das Fenster hat mehrere Teile. Wichtig sind hier der Teil Projekt-Explorer (links oben) und der Teil Editor (rechts oben)
3) Im Projekt-Explorer mit einem Rechtsklick auf das VBAProjekt mit dem Namen der Originaldatei  und dort mit "Einfügen" > "Modul" ein neues Modul erstellen.
   (Es erscheint ein Verzeichnis "Module" mit einem Objekt "Modul1" im Baum unter dem VBAProjekt)
4) Im Projekt-Explorer mit einem Doppelklick das Objekt "Modul1" im Baum unter dem VBAprojekt der Beispieldatei öffnen.
   (Im Editor erscheint der Text der Funktion beginnend mit "Option Explicit" und endend mit "End Function")
5) Im Editor den gesamten Text markieren und mit Strg+C in die Zwischenablage legen.
6) Im Projekt-Explorer mit einem Doppelklick das Objekt "Modul1" im Baum unter dem VBAprojekt der Originaldatei öffnen.
   (Im Editor verschwindet der Text, da dieses Objekt noch leer ist)
7)Im Editor mit Strg+V den zwischengelagerten Text ins neue Objekt übernehmen.

Jetzt kann die Funktion auch in der Originaldatei genutzt werden. Da diese Datei nun Makros enthält  muss sie beim Abspeichern mit dem Dateityp "Excel-Arbeitsmappe mit Makros" (Endung xlsm) abgespeichert werden.


Angehängte Dateien
.xlsm   TzgOnline.xlsm (Größe: 99,5 KB / Downloads: 3)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • tzgonline
Antworten Top
#8
Hallo, Ego,

entschuldige die späte Antwort; die Tabelle ist für ein Uniprojekt, an dem ich nur donnerstags arbeite.


Die Formel funktioniert jetzt und nimmt mir eine Menge fehleranfällige händische Arbeit ab. Vielen Dank dafür! :)

Viele Grüße
tzgonline
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste