Registriert seit: 20.06.2021
Version(en): 2019
20.06.2021, 09:50
Hallo Leute,
ich bin neu und hoffe ich mach das hier gleich richtig.
Jetzt zu meinem Problem:
Ich benötige eine Formel die aus einer Zelle (Stückzahl) andere Zellen dementsprechend genauso oft einen Wert in andere Zellen schreibt.
Bsp: in Tabelle 1 in Zelle A1 stehen die vorhandenen Stücke zb. 5 Stück. In Zelle B1 steht ein Text (Generalschlüssel). jetzt soll in Tabelle 2 in Zelle A1-A5 Generalschlüssel stehen.
in Tabelle 1 in Zelle A2 steht jetzt wieder eine Stückzahl und in Zelle B2 wiederum ein neuer Text. Jetzt soll unter dem ersten Ergebnis (Aus A1 und B1) das neue Ergebnis stehen
Zusätzlich soll die Funktion auch in Tabelle 2 in eine bestimmte Zelle die fortlaufende Nummer eintragen.
und so weiter.
ich hoffe es war soweit verständlich.
Ich bedanke mich jetzt schon mal bei euch :)
Registriert seit: 09.08.2017
Version(en): 2016
20.06.2021, 10:11
(Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2021, 10:13 von Oldiefan.)
Servus!
Ich habe mich mal drangesetzt und folgende Formel für Tabelle2 Spalte A gebastelt. A1 =Tabelle1!B1
Ab A2 die Matrixformel {=WENN(ZÄHLENWENN($A$1:A1;A1)<INDEX(Tabelle1!A:A;VERGLEICH(A1;Tabelle1!B:B;0));A1;INDEX(Tabelle1!B:B;SUMME(1/ZÄHLENWENN($A$1:A1;$A$1:A1))+1))}
ohne {} und mit CSE abschließen.
Liebe Grüße
Alex
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
20.06.2021, 10:18
(Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2021, 10:25 von RPP63.)
Moin!
Ich bin mir sehr sicher, dass da mit Formeln nix zu machen ist (selbst mit den neuen dynamischen aus Excel 365 nicht).
Schließlich sind die einzelnen Blöcke unterschiedlich hoch.
(für
einen Block geht das, siehe Oldiefan)
Update:
Die geänderte Formel habe ich erst jetzt gesehen.
Das ist eher etwas für VBA.
Ich bastel gleich mal was …
Gruß Ralf
Mal aus dem Handgelenk:
Modul Modul1Option Explicit
Sub Reihe()
Dim i&, k&, l&
l = 1
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For k = 1 To Cells(i, 1).Value
Cells(l, 4) = Cells(i, 2)
l = l + 1
Next k
Next i
End Sub
Ergibt
| A | B | C | D |
1 | 5 | Bla | | Bla |
2 | 3 | Blupp | | Bla |
3 | 2 | Kamelle | | Bla |
4 | | | | Bla |
5 | | | | Bla |
6 | | | | Blupp |
7 | | | | Blupp |
8 | | | | Blupp |
9 | | | | Kamelle |
10 | | | | Kamelle |
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 20.06.2021
Version(en): 2019
Das ging ja richtig fix!
Vielen Dank ich werde es später gleich mal testen!
Vielen vielen Dank das ganze hat mir schon richtig Kopfschmerzen verursacht ^^
Registriert seit: 20.06.2021
Version(en): 2019
Hi RPP63,
ich verstehe nicht so ganz wie ich das Tool von dir einsetzen kann könntest du mir das vielleicht erklären.
Bin was die VBA angeht ziemlich schwach unterwegs.
Vielen Dank!
Registriert seit: 20.06.2021
Version(en): 2019
23.06.2021, 10:49
(Dieser Beitrag wurde zuletzt bearbeitet: 23.06.2021, 10:51 von tomcat.)
Ich hab anbei mal mein Projekt angefügt damit man versteht was ich genau benötige
Ich habe hier ein Beispiel gebracht mit (die werte sind händisch eingetragen worden zur Veranschaulichung)
Folgendes soll passieren:
Die angegebenen Schlüssel aus Tabelle "Matrix L4" sollen so oft in Tabelle "importSchlüssel2 B4" übertragen werden wie die angegeben Stück aus Tabelle "Matrix L10"
Zugleich muss Stück aus Tabelle "Matrix L10" in Tabelle "importSchlüssel2 C4" mit einem Inkrement von 1 übertragen werden.
Ich hoffe es ist soweit verständlich
Danke nochmals!
Registriert seit: 06.09.2016
Version(en): 2016
Hallo tomcat,
Lösungen über pn sind in Foren nicht üblich. Es wollen ja alle etwas lernen oder ihren Senf zur Lösung beitragen.
Ich habe Ralfs Makro auf deine Datei umgeändert und um den Zähler erweitert:
Code:
Sub Reihe()
Dim SLese&, WH&, ZSchreib&
Dim wksLesen As Worksheet, wksSchreiben As Worksheet
Set wksLesen = ThisWorkbook.Worksheets("Matrix")
Set wksSchreiben = ThisWorkbook.Worksheets("import Schlüssel2")
ZSchreib = 4
For SLese = 12 To wksLesen.Cells(4, Columns.Count).End(xlToLeft).Column
For WH = 1 To wksLesen.Cells(10, SLese).Value
wksSchreiben.Cells(ZSchreib, 2) = wksLesen.Cells(4, SLese)
wksSchreiben.Cells(ZSchreib, 3) = wksLesen.Cells(10, SLese).Value - (WH - 1)
ZSchreib = ZSchreib + 1
Next WH
Next SLese
End Sub
Den Code musst Du in den VBA-Editor einfügen (mit Alt+F11 öffnen, über Symbolleiste ein neues Modul einfügen, Code da einfügen).
Wenn Du den Code einmal brauchst einfach über die Play-Taste starten, ansonsten über einen Tastenkombination oder Button verknüpfen.
ACHTUNG: Der Ablauf eines Makros lässt sich über die Rückgängig-Taste nicht wieder rückgängig machen!!!
Gruß,
Lutz
Registriert seit: 20.06.2021
Version(en): 2019
24.06.2021, 09:15
TOPTOPTOP
Vielen Dank es funktioniert so wie es soll!
Und entschuldigt meine ungeduld aber das Thema hat mich schon verrückt gemacht.
Thema ist somit gelöst!
Registriert seit: 20.06.2021
Version(en): 2019
Jetzt hätte ich doch noch ne Frage wäre es möglich falls ich einen wert lösche dass dieser bei neu ausführen des Makros dann in meiner Tabelle gelöscht wird?
Registriert seit: 20.06.2021
Version(en): 2019
Hab es selbst noch hinbekommen.
Hier der Code:
Option Explicit
Sub Schlüssel_Folge_Übertragen()
Dim SLese&, WH&, ZSchreib&
Dim wksLesen As Worksheet, wksSchreiben As Worksheet
Set wksLesen = ThisWorkbook.Worksheets("Matrix")
Set wksSchreiben = ThisWorkbook.Worksheets("import Schlüssel2")
ZSchreib = 4
wksSchreiben.Range("B4:B47,C4:C47").ClearContents
For SLese = 12 To wksLesen.Cells(4, Columns.Count).End(xlToLeft).Column
For WH = 1 To wksLesen.Cells(10, SLese).Value
wksSchreiben.Cells(ZSchreib, 2) = wksLesen.Cells(4, SLese)
wksSchreiben.Cells(ZSchreib, 3) = wksLesen.Cells(10, SLese).Value - (WH - 1)
ZSchreib = ZSchreib + 1
Next WH
Next SLese
End Sub
Vielen Dank jetzt endgültig erledigt!