Collapse column

Autor Thema: Office 2010: Problem mit Ausgabe des Ergebnis aus einer benutzerdefinierten Funktion  (Gelesen 1337 mal)

Offline sacoma

  • Newbie
  • *
  • Beiträge: 28
    • Profil anzeigen
  • Office-KnowHow: Anfänger
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2010
Hallo Leute! :)

Ich habe einige Funktionen programmiert, die im Prinzip funktionieren; im „Debug.Print“ und im Menü „Funktionsargumente“ wird das Ergebnis richtig angezeigt, aber die Ausgabe in den Excel-Zellen ist immer „#Wert“. ???
Ich habe die Funktionen in eine Beispiel-Datei kopiert und eine Tabelle erstellt mit Beispiel-Werten.
Alle möglichen, üblichen Fehlerquellen (wie z.B.: Leerzeichen etc.) habe ich ausgeschlossen. :(
Ich hoffe, mir kann jemand helfen. ;)

LG,

sacoma :D

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Hallo,

was möchtest Du mit den Funktionen erreichen?

Falls Du die Überschriftsinhalte aus den Zuordnungstabellen entsprechend der Angabe in Spalte A erhalten
möchtest, brauchst Du kein VBA dafür. Formeln...

Code: Visual Basic
  1. B6=INDEX(Darm_Kaliber_Zuordnung[#Kopfzeilen];1;SUMMENPRODUKT(SPALTE(Darm_Kaliber_Zuordnung)*(Darm_Kaliber_Zuordnung=$A6))-
  2.    SPALTE(Darm_Kaliber_Zuordnung[[#Kopfzeilen];[Kal. 18]])+1)
  3.  
  4. C6=INDEX(Maschinen_Zuordnung[#Kopfzeilen];1;SUMMENPRODUKT(SPALTE(Maschinen_Zuordnung)*(Maschinen_Zuordnung=$A6))-
  5.    SPALTE(Maschinen_Zuordnung[[#Kopfzeilen];[Tiefzieher]])+1)
  6.  
  7. D6=INDEX(Zuordnung_Spezi_Gruppen[#Kopfzeilen];1;SUMMENPRODUKT(SPALTE(Zuordnung_Spezi_Gruppen)*(Zuordnung_Spezi_Gruppen=$A6))-
  8.    SPALTE(Zuordnung_Spezi_Gruppen[[#Kopfzeilen];[fettig]])+1)

Voraussetzung für die Formeln sind, dass die Artikel eindeutig in den Tabellen sind. Ist bei P1007 nicht der Fall.

Was den Code betrifft, sind da einige Fehler drin, wie Set rng_Spalte = Range("Spalte"), den benannten Bereich
gibt's nicht, ich vermute, dass es Range("def_Spalte") sein sollte. Um eine Spaltennummer zu ermitteln musst
Du nicht den Umweg über eine Formel gehen, das geht auch z.B. so: sp1 = rng_dkz.Cells(1, 1).Column

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline sacoma

  • Newbie
  • *
  • Beiträge: 28
    • Profil anzeigen
  • Office-KnowHow: Anfänger
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2010
Hallo maninweb! :D

Danke für deine Antwort.

Ja, ich möchte die Überschriftsinhalte aus den Zuordnungstabellen für die jeweilige Aritkel-Nummer…
So was dummes auch! Ich dachte, ich hätte den benannten Bereich wieder richtig umbenannt. :-[
Ich wollte testen, ob es vielleicht am Range „Spalte“ lag, dass ständig  „#Wert“ als Ergebnis ausgegeben wurde.

Ich habe nun meine Datei korrigiert und hochgeladen. :)

Was den Rest angeht: Ich will ja nur wissen, warum das Ergebnis immer „#Wert“ ist obwohl alle Variablen funktionieren. Der Fehler muss in der Übergabe von der Variable „str_ergebnis“ zu z.B.:„Abfrage_Darm_Kaliber“ sein. ::)

Deine Formel-Lösung ist zwar sehr interessant, aber für mich zu kompliziert. :o
Mit Matrix-Formeln kenne ich mich nicht aus.
Außerdem mag ich keine zu sehr verschachtelten Formeln; da verklickt man sich einmal und schon ist sie im Eimer.
Eine benutzerdefinierte Funktion wäre hier besser für mich. ;D
Noch eine Frage:
Zitat
Voraussetzung für die Formeln sind, dass die Artikel eindeutig in den Tabellen sind. Ist bei P1007 nicht der Fall.
– Was meinst du damit?

LG,

sacoma ;)

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Hallo,

eine Formellösung ist so gut wie in fast allen Fällen einer VBA-Lösung vorzuziehen. Matrixformeln sind das nicht,
nur Index & Summenprodukt-Formeln.  :D

Zum Verständnis: Index sucht Dir aus einer Matrix = Bereich einen Wert an der Position X = Zeile und Y = Spalte
heraus. Das wäre bei Dir die Zeile mit den Spaltenköpfen, also ein Bereich Zelle_1 bis Zelle_n mit einer Höhe = 1.
Ergibt: INDEX(Der_Bereich_für_Spaltenüberschriften; 1; Zu_suchende_Spalte_in_dem_Bereich).

So, jetzt musst Du dann die Spalte suchen. Dafür durchsuchst Du die Datentabelle (unterhalb der Spaltenköpfe)
nach dem Artikel z.B. P1000. Damit ein vernünftiges Ergebnis rauskommt, darf es den Artikel nur einmal in der
Tabelle geben (Das war meine Anm. zur Eindeutigkeit). Mit Summenprodukt kannst Du recht einfach die Position
finden: Die Spaltennummer * Bedingung liefert Dir in etwa vereinfacht {10, 11 , 12} * {0, 1, 0} = 11. Die Spalten-
nummer ist aber gezählt von A1, weshalb Du nochmal die Startspalte der Datentabelle abziehen musst.

Für den Code habe ich momentan zu wenig Zeit, später vielleicht.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline sacoma

  • Newbie
  • *
  • Beiträge: 28
    • Profil anzeigen
  • Office-KnowHow: Anfänger
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2010
Hallo! :)

Also, ich habe die ganze Woche an dem Problem gearbeitet und eine alternative Lösung bzw. Code geschrieben. ;D
Die Lösung wollte ich anderen Usern nicht vorenthalten. ::)

Mich würde trotzdem interesserien, warum mein erster Entwurf vom VBA nicht richtig ausgegeben werden konnte und diese Alternative schon... :o
Aber ich fürchte, manche Dinge in Excel-VBA bleiben für mich rätselhaft... 8)

LG,

SaCoMa ;)

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.