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

Kombination aus 3 Spalten

Kombination aus 3 Spalten
11.01.2021 13:42:16
Philipp
Hallo an alle...
ich habe ein kleines Problem, wo ich mit meiner Recherche im Forum nicht mehr weiterkomme.
Ich habe eine Excel Mappe mit 3 Spalten A, B und C. In der Spalte steht ein Code aus mehreren Buchstabe drin.
A: B: C:
Wert A Wert B Wert C
A1 1 AX
B1 2 BZ
C1 3 PA
D1 4 QC
E1 5 3A
Nun suche ich einen Befehl oder eine Möglichkeit, wie ich automatisch alle möglichen Kombinationen aus den Codestücken der 3 Spalten generieren kann. (Diese sollen dann in der Spalte D gelistet sein)
z.B.:
Spalte D:
A1-1-AX
A1-1-BZ
A1-1-PA
A1-1-QC
A1-1-3A
A1-2-AX
A1-2-BX
usw...
Gibt es soetwas?
Vielen Dank und liebe Grüße an euch alle!
Philipp

41
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kombination aus 3 Spalten
11.01.2021 14:14:27
Oisse
Hallo Philipp,
meintest Du so?
Option Explicit
Sub CodeGenerieren()
Dim wb As Workbook
Dim ws As Worksheet
Dim i, x, y, z, lz As Long
Set wb = ThisWorkbook
Set ws = wb.Worksheets(1)
z = 1
With ws
lz = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lz
For x = 1 To lz
For y = 1 To lz
.Cells(z, 4) = .Cells(i, 1) & " " & .Cells(x, 2) & " " & .Cells(y, 3)
z = z + 1
Next y
Next x
Next i
End With
End Sub

Gruß Oisse
AW: Kombination aus 3 Spalten
11.01.2021 14:22:28
Philipp
Hallo Oisse
Sorry für die wahrscheinlich dümmste Frage aber wie kann ich den Code in meine Excel Tabelle einfügen?
Ich habe im Forum schon etwas ähnliches gesehen - nur direkt als Befehl nur leider für 2 Spalten statt 3.
=INDEX(A:A;ZEILE(D1)/ANZAHL2(B:B)+1-1%%)
=INDEX(B:B;REST(ZEILE(E1)-1;ANZAHL2(B:B))+1)
Anzeige
AW: Kombination aus 3 Spalten
11.01.2021 14:37:34
Oisse
Hallo Philipp,
in Deine Exceltabelle kannst Du den Code nicht einfügen, weil es ein VBA-Code ist, also ein Makro, das sozusagen im Hintergrund läuft. Dazu müsstest du die [Alt]+[F11]-Tasten drücken. Dann öffnet sich VBA, also die sog. Entwicklungsumgebung.
Du siehst dann oben in der Menüleiste "Einfügen". Wähle hier "Modul". Dieses Modul wird dann automatisch "Modul1" genannt und auf der linken Seite angezeigt. Wenn du einen Doppelklick drauf machst, kannst Du im rechten weißen Fenster den Code einfügen.
Zum Laufen bringst du ihn, wenn Du dann oben in der Menüleiste den "Play"-Button drückst.
Teste mal, ob Du das so hinbekommst.
Wenn Du das hast und das für andere Code-Generierungen haben möchtest wäre es sinnvoll im Tabellenblatt noch einen Button zu erstellen. Da kannst Du Dich ja nochmal melden.
Gruß Oisse
Anzeige
AW: Kombination aus 3 Spalten
11.01.2021 14:40:43
Philipp
Vielen Dank - habe es mittlerweile hinbekommen. Tausend Dank für die Geduld. Ich liebe dieses Forum!
AW: Kombination aus 3 Spalten
11.01.2021 14:21:17
UweD
Hallo
so?

Sub Kombinationen()
Dim i As Integer, j As Integer, k As Integer
Dim LR As Integer, z As Integer, SP As Integer
LR = Cells(Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
z = 1: SP = 4
For i = 1 To LR
For j = 1 To LR
For k = 1 To LR
Cells(z, SP) = Cells(i, 1) & "-" & Cells(j, 2) & "-" & Cells(k, 3)
z = z + 1
Next k
Next j
Next i
End Sub
LG UweD
AW: Kombination aus 3 Spalten
11.01.2021 14:52:24
Philipp
Kurze Rückmeldung..
Er wirft alle Codes aus nur ab einer bestimmten Stelle, hört die Liste mit Generierten Codes auf..
Das ist bis 2500.. kann man das verändern, dass er alle auswirft
Anzeige
AW: Kombination aus 3 Spalten
11.01.2021 15:10:53
UweD
Meinst du bei 2500 Einträge in A (und b und c)
Das gibt n hoch 3 Zeilen
also bei den 5 =: 125
bei 2500 =: 15,6 Mrd =: zu viel
AW: Kombination aus 3 Spalten
11.01.2021 15:12:12
Philipp
Okay dann liegt wohl daran...
also meine Tabelle besteht aus
A: 13 Werte
B: 365 Werte
C: 4500 Werte
aber ich bin mittlerweile selber daraufgekommen, dass das wohl zu viel für Excel wird
AW: Kombination aus 3 Spalten
11.01.2021 15:17:47
ChrisL
Hi Philipp
Wozu hätte denn das Ergebnis dienen sollen? Womöglich muss man die 21 Mio. Kombinationen nicht einzeln auflisten sondern kann direkt das Resultat ermitteln.
cu
Chris
AW: Kombination aus 3 Spalten
11.01.2021 15:33:25
Philipp
Also kurz zur Erklärung:
Ich möchte eine Information verschlüsseln
A: B: C: D: E: F:
Person A X0 01.01 -RC 100000 XTQ
Person B X7 02.01 -BJ 100001 LP2
Person C X9 03.01 -QC 100002 QR3
Person D X1 04.01 -E4 100003 PP3
D.H.: Ich möchte eine Lange Liste mit allen möglichen Codes haben.
z.B.: Person A am 02.01 hat Zustand 100003. Verschlüsselt wäre das X0-BJ-PP3
Jetzt habe ich eine Userform mit einer Listbox und einer Textbox.
Diese Userform dient als dynamische Suchfunktion.
Man soll in dieser den Verschlüsselten Code X0-BJ-PP3 eingeben können und anschließend die ursprüngliche Aussage erhalten.
Die Suchfunktion bei der Listbox funktioniert, (Auch wenn sie nur 13 Zeilen oder so anzeigt)
Jetzt war meine Überlegung in eine Tabelle alle möglichen Codes mit deren "Übersetzung" zu schreiben, welche dann letztlich in der Listbox stehen und per SUFU gefunden werden können.
Anzeige
Verschlüsselung
11.01.2021 15:49:45
ChrisL
Hi Philipp
Die (Übersetzungs-)tabelle sicher zu verstecken wäre ein Problem. Mappen-/Blattschutz kann mit bescheidenem Aufwand geknackt werden.
Falls du diesen Weg trotzdem einschlagen möchtest, dann könntest du den Datensatz einfach mit einem per Zufallsgenerator erzeugten Schlüssel/Code versehen.
Ich gehe davon aus, dass dir die Profis bei Bedarf echte Verschlüsselungssysteme empfehlen können (z.B. PGP o.ä.).
cu
Chris
AW: Verschlüsselung
11.01.2021 15:57:35
Philipp
Hallo Christ, erstmal danke für deine vielen Antworten:
Bei meiner Excel geht es nicht darum, sensible Daten zu verstecken.
Viel mehr soll eine Informationskette gekürzt werden und auf den ersten Blick soll sie nicht erkennbar sein.
Bsp.:
Eine fremde Person soll hat nur X0-5C-251 sehen statt Berlin-12.01.20-MaxMustermann.
Die Person, die das Programm hat soll nun diesen Code lesen können. Also die Information soll wieder entschlüsselt werden.
Da meine Kenntnisse in Excel und VBA nun nicht sehr ausgereift sind, habe ich gedacht ich kann dieses Verschlüsseln über mehrere Schritte machen.
Interessant wäre auch ein Barcode oder villt ist es möglich, eine oben genannte Zeichen bzw Wortfolge in eine Zahl umzuwandeln.
Bsp.: Berlin-12.01.20-MaxMustermann. in 456491318135
Im Gegenzug müsste dann meine Userform diesen Code wieder entschlüsseln
Anzeige
AW: Verschlüsselung
11.01.2021 16:06:32
ChrisL
Hi
https://www.herber.de/bbs/user/142926.xlsm
Quelle Passwort-Generator:
https://www.herber.de/forum/archiv/1088to1092/1089633_VBA_Passwort_Generator.html
Die Zahl 3 in folgender Zeile kannst du anpassen (=Passwortlänge).
strPW = machs(3)
cu
Chris
Private Sub cmdLaden_Click()
Dim strPW As String
strPW = InputBox("Passwort eingeben")
If strPW = "" Then Exit Sub
With Tabelle1
If WorksheetFunction.CountIf(.Columns(1), strPW) Then
TextBox1 = .Cells(Application.Match(strPW, .Columns(1), 0), 2)
Else
MsgBox "Passwort falsch"
End If
End With
End Sub

Private Sub cmdSpeichern_Click()
Dim strPW As String
With Tabelle1
strPW = machs(3)
With .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
.Value = strPW
.Offset(0, 1) = TextBox1
TextBox1 = ""
End With
MsgBox "Datensatz gespeichert. Passwort: " & strPW
End With
End Sub
Public Function machs(A As Integer) As String
Const strText As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!""§$%& _
()[]{}\?**#:;,.-+"
Dim B() As Byte
Dim Z As Integer
Dim I As Integer
Dim tmp
B = StrConv(strText, vbFromUnicode)
Randomize
For I = 0 To UBound(B)
Z = Int(UBound(B) * Rnd)
tmp = B(Z)
B(Z) = B(I)
B(I) = tmp
Next
machs = Left(StrConv(B, vbUnicode), A)
End Function

Anzeige
AW: Verschlüsselung
11.01.2021 16:16:36
Philipp
Super Chris - das bringt mich auf jeden Fall weiter.
Gibt es eine Möglichkeit, das generierte Passwort aus 3 Komponenten zu bauen?
A) Feste Komponenten PLZ (steht z.B.: in einer Excel drin - die ändert sich nicht)
B) Feste Komponenten Datum (steht auch in einer Excel drin)
C) Variable Komponente - einen Namen den ich eingebe
Dann sollte z.B.: Das Passwort X8q4C. generiert werden
Wenn ich das Passwort jetzt zum Entladen eingeben möchte, kann es dann auch wieder in seine Einzelteile aufgesplittet werden. Z.B. PLZ-Datum-Individuelles Wort?
Liebste Grüße und in deiner Schuld stehend
Philipp
Anzeige
AW: Verschlüsselung
11.01.2021 16:53:29
Oisse
Sorry Philipp, wenn ich nochmal nachfrage aber ich komme da jetzt nicht so ganz mit:
Soll denn für jeden Mitarbeiter einmal ein Passwort generiert werden? Also bestehend aus z.B.:
PLZ; Datum; Personenkürzel (o.ä)
Wann soll sich das Passwort ändern? Denn neu wäre es ja schon wegen des Datums. (welches Datum ist das denn? Geburtsdatum? Anwesenheitsdatum?...)
Ich frage nur deshalb nach, damit ich das für mich logisch nachvollziehen kann.
Aber wenn Du schon eine Lösung hast, musst Du natürlich nicht antworten.
Gruß Oisse
AW: Schlüssel außerhalb der Datei
11.01.2021 18:11:38
Fennek
Hallo,
egal wie verschlüsselt wird, kann man das immer recht schnell auflösen, sofern der Schlüssel und der Algorithmus in der Datei steht.
Nur wenn der Schlüssel für jeden User separat auf dem jeweiligen PC gespeichert wird, wird das "knacken" recht schwierig.
mfg
Anzeige
AW: Verschlüsselung
11.01.2021 18:13:31
Philipp
Huhu Oisse, erstmal vielen Dank für deine Antwort.
Ich habe ein Programm, das mittels Etikettendrucker einzelne Etiketten ausdruckt.
Diese Etiketten werden von 13 vers. Orten - an 365 Tagen - von verschiedenen Personen ausgedruckt.
Auf das Etikett soll eine verschlüsselter Code gedruckt werden -
Information A) von welchem Standort, Information B) an welchem Tag c) welche Person.
Jetzt habe ich in meiner Mappe 6 Spalten
Immer Rohwert und die entsprechende Verschlüsselung
also z.b.:
Standort A - XZ; Datum 12.10. - 9C; Person 100001 - X7C
Der Code wäre dann XZ-9C-X7C. Grund wieso dieser Code so verschlüsselt ist, dass nur intern diesen verstehen soll. Weil als fremde Person, die das Etikett liest, kann man mit XZ-9C-X7C nichts anfangen.
Das ganze Programm läuft Lokal, deswegen kann ich nicht auf eine öffentliche Datenbank zugreifen. Deswegen habe ich eine Lösung gesucht, wie man auch offline - egal von welchem Standort - diesen Code entschlüsseln kann.
Standort A) druckt Code für Standort A) auf das Etikett.
Mein Plan war also - Alle Kombinationen (deswegen diesen Thread) in eine Exceltabelle zu schreiben - danebenstehend die Übersetzung. Mit einer Userform (Userform funktioniert wie eine Suchmaschine) konnte ich dann den Code eingeben, welche dann den danebenstehend Eintrag in der Tabelle mit angezeigt hat.
Das ganze Problem was ich jetzt habe.
Ich habe Spalte A - 13 Werte (Standorte)
Spalte B besteht aus 366 Werte (Tage)
Spalte C besteht auf 4000 Werte (Personalnummern) - Problem: Mitarbeiter A arbeitet manchmal an 5 Standorten.
Dadurch ergeben sich zu viele Kombinationen, die Excel nicht verarbeiten kann.
Deswegen suche ich eine Möglichkeit, wie ich meine Werte einfach verschlüsseln und wieder übersetzen kann. Also jeder Standort sollte den Code gleich entschlüsseln können.
Anzeige
AW: Verschlüsselung
11.01.2021 18:13:31
Philipp
Huhu Oisse, erstmal vielen Dank für deine Antwort.
Ich habe ein Programm, das mittels Etikettendrucker einzelne Etiketten ausdruckt.
Diese Etiketten werden von 13 vers. Orten - an 365 Tagen - von verschiedenen Personen ausgedruckt.
Auf das Etikett soll eine verschlüsselter Code gedruckt werden -
Information A) von welchem Standort, Information B) an welchem Tag c) welche Person.
Jetzt habe ich in meiner Mappe 6 Spalten
Immer Rohwert und die entsprechende Verschlüsselung
also z.b.:
Standort A - XZ; Datum 12.10. - 9C; Person 100001 - X7C
Der Code wäre dann XZ-9C-X7C. Grund wieso dieser Code so verschlüsselt ist, dass nur intern diesen verstehen soll. Weil als fremde Person, die das Etikett liest, kann man mit XZ-9C-X7C nichts anfangen.
Das ganze Programm läuft Lokal, deswegen kann ich nicht auf eine öffentliche Datenbank zugreifen. Deswegen habe ich eine Lösung gesucht, wie man auch offline - egal von welchem Standort - diesen Code entschlüsseln kann.
Standort A) druckt Code für Standort A) auf das Etikett.
Mein Plan war also - Alle Kombinationen (deswegen diesen Thread) in eine Exceltabelle zu schreiben - danebenstehend die Übersetzung. Mit einer Userform (Userform funktioniert wie eine Suchmaschine) konnte ich dann den Code eingeben, welche dann den danebenstehend Eintrag in der Tabelle mit angezeigt hat.
Das ganze Problem was ich jetzt habe.
Ich habe Spalte A - 13 Werte (Standorte)
Spalte B besteht aus 366 Werte (Tage)
Spalte C besteht auf 4000 Werte (Personalnummern) - Problem: Mitarbeiter A arbeitet manchmal an 5 Standorten.
Dadurch ergeben sich zu viele Kombinationen, die Excel nicht verarbeiten kann.
Deswegen suche ich eine Möglichkeit, wie ich meine Werte einfach verschlüsseln und wieder übersetzen kann. Also jeder Standort sollte den Code gleich entschlüsseln können.
AW: Verschlüsselung
11.01.2021 18:36:41
Philipp
Edit: Diese Verschlüsselung von den Rohwerten z.B.: 01.01- MX1 sind einfach nur 366 zufällig generierte und eindeutige Zahlen/Buchstaben Kombinationen.
AW: Verschlüsselung
11.01.2021 19:13:40
Oisse
Ist jetzt nur mal zu meinem besseren Verständnis und einer meiner Meinung nach logischen Vorgehensweise und noch Fragen:
Du hast doch für jeden Standort einen festen Schlüssel. Den kennt ja schon mal sonst keiner von Aussen.
Dann hast du einen festen Schlüssel für den Mitarbeiter, den kennt ja auch keiner von Aussen.
Wenn du dann das Datum nicht als Standarddatum nimmst, sondern das Datum als Zahl, weißt du genau, wann das war und die Zahl kennt auch keiner von Außen.
Nehmen wir mal an Standort 5 hat dein Kürzel xl
Die Zahl für das heutige Datum ist 44207, (für morgen ist es die 44208)
Und das Kürzel für den Mitarbeiter ist JB01
Dann wäre Dein Code xl44207JB01
Den wird keiner knacken, wenn er nicht weiß, was was ist.
Wenn der MA an einem anderen Standort ist, sagen wir Standort 10 mit dem Kürzel av und es ist immer noch derselbe Tag, lautet der Code eben: av44207JB01
Den ganzen Code wieder zu entschlüsseln ist dann wirklich keine Kunst mehr.
Habe ich das logisch so richtig verstanden und wäre das eine Vorgehensweise für dich?
Gruß Oisse
AW: Verschlüsselung
11.01.2021 20:51:14
Philipp
Genau so soll diese "Verschlüsselung" funktionieren!
Es ist mir nur wichtig, dass die Informationen
a) nicht direkt sichtbar sind also "av44207JB01" statt Standort 10 - 11.01.2021 -Mitarbeiter 1
b) das man mittels Userform einen solchen Code eingeben kann und entsprechend aus "av44207JB01" dann den Code Sichtbar Standort 10 - 11.01.2021 - Ma1 bekommt
Ich habe mir die Userform von dem Youtubekanal

https://www.youtube.com/watch?v=JTHWn3_TQ0c&ab_channel=VBA-KracherHeld-office

nachgebaut. In dieser kann man in einer Listbox, alle Werte aus der Tabellenspalte mittels Textbox, heraussuchen.
Ich wollte alle "av44207JB01-Codes" in der 1. Spalte - die dazugehörigen Werte hätte es dann angezeigt.
siehe Bild
https://www.bilder-upload.eu/bild-fef782-1610394515.jpg.html

Ich suche jetzt nur noch eine Lösung wie das mit der Suche am einfachsten klappt, ohne das ich 12 Millionen Kombinationen alle hinschreiben muss :O
AW: Verschlüsselung
11.01.2021 21:03:51
Oisse
Gut, dann habe ich wenigstens deine Denkweise verstanden.
Für die weitere Vorgehensweise bräuchte man allerdings schon eine Beispielmappe, um zu sehen, wie du was aufgebaut hast, wo die Daten her sind usw.
Bitte stell so eine Mappe rein, damit man helfen kann. Tipp: Mache eine Kopie deiner Mappe, lösche alle deine Mitarbeiter raus und ersetze sie durch irgendwelche Namen (4 oder 5 MA reichen).
Gruß Oisse
AW: Verschlüsselung
11.01.2021 21:53:55
Philipp
Hallo Oisse..
https://www.herber.de/bbs/user/142932.xlsx
Anbei die Excel. Leider kann ich ohne Userform und Code hochladen.
Die Userform, die man in der Tabelle entschl. startet besteht nur aus einer Listbox, Textbox und CMDBUtton.
In der Tabelle Datenbank sind alle Werte und entsprechend der passende Code dazu (mit SVERWEIS)
Dieser Code wird aufs Etikett gedruckt.
Und in der 3. Mappe soll man das halt entschlüsseln können - das geht aber mit meiner Methode nicht komplett.
Liebste Grüße
Der Code lautet

Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_Initialize()
Dim lngZeile As Long
Dim lngZeileMax As Long
Dim lngz As Long
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = "160;80;80;120"
.Font.Size = 14
End With
With Worksheets("entschl")
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
For lngZeile = 3 To lngZeileMax
Me.ListBox1.AddItem .Range("A" & lngZeile).Value
Me.ListBox1.Column(1, lngz) = .Range("B" & lngZeile).Value
Me.ListBox1.Column(2, lngz) = .Range("C" & lngZeile).Value
Me.ListBox1.Column(3, lngz) = .Range("D" & lngZeile).Value
lngz = lngz + 1
Next lngZeile
End With
Me.TextBox1.Font.Size = 14
End Sub
Private Sub TextBox1_Change()
Dim i As Integer
Dim lngLaenge As Long
Dim strText As String
Me.ListBox1.Clear
UserForm_Initialize
lngLaenge = Len(Me.TextBox1.Value)
If Left(Me.TextBox1.Value, 1) = "*" Then
strText = LCase(Replace(Me.TextBox1.Value, "*", ""))
For i = Me.ListBox1.ListCount - 1 To 0 Step -1
If InStr(Me.ListBox1.List(i, 0), strText) > 0 Or _
InStr(Me.ListBox1.List(i, 1), strText) > 0 Or _
InStr(Me.ListBox1.List(i, 2), strText) > 0 Or _
InStr(LCase(Me.ListBox1.List(i, 3)), strText) > 0 Then
Else
Me.ListBox1.RemoveItem i
End If
Next i
Else
For i = Me.ListBox1.ListCount - 1 To 0 Step -1
If Left(Me.ListBox1.List(i, 0), lngLaenge) = Me.TextBox1.Value Or _
Left(Me.ListBox1.List(i, 1), lngLaenge) = Me.TextBox1.Value Or _
Left(Me.ListBox1.List(i, 2), lngLaenge) = Me.TextBox1.Value Or _
LCase(Left(Me.ListBox1.List(i, 3), lngLaenge)) = LCase(Me.TextBox1.Value) Then
Else
Me.ListBox1.RemoveItem i
End If
Next i
End If
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub

AW: Verschlüsselung
12.01.2021 08:02:53
ChrisL
Hi Philipp
Zelle M2:M3: Im SVERWEIS müsste man WAHR in FALSCH umändern.
Da du schon per Formel verschlüsselst, könnest du doch auch gleich so wieder entschlüsseln.
=INDEX(Datenbank!A:A;VERGLEICH(LINKS(C7;2);Datenbank!B:B;0);1)
=INDEX(Datenbank!D:D;WENNFEHLER(VERGLEICH(TEIL(C7;4;2);Datenbank!E:E;0);VERGLEICH(TEIL(C7;4;2)*1; Datenbank!E:E;0));1)
=INDEX(Datenbank!G:G;VERGLEICH(RECHTS(C7;3);Datenbank!H:H;0);1)
cu
Chris
AW: Verschlüsselung
12.01.2021 08:44:00
Oisse
Hallo Philipp,
irgendwie stehe ich noch etwas auf der Leitung, deshalb noch ein paar Verständnisfragen:
Wer druckt denn die Etiketten aus und wie kann derjenige sich als der entsprechende Mitarbeiter eintragen? Wie wird denn eingegeben welcher Standort es ist? Woher weiß man das Datum bzw. wie wird das eingegeben?
Brauchst du immer nur ein Etikett oder sollen es eventuell mehrere sein?
Sind denn der Drucker und der PC immer am gleichen Standort und nur die zwei miteinander verbunden oder soll über einen PC mehrere Drucker angesprochen werden können?
Tut mir leid, dass ich dich damit nerve aber wenn ich den praktischen Verlauf nicht verstehe, werde ich auch deine Programmierung nicht verstehen.
Nur ein Vorschlag:
Wäre es denn nicht sinnvoll, wenn du zwei Listenfelder hättest?
Ein Listenfeld zur Auswahl des Standortes und ein Listenfeld zur Auswahl des Mitarbeiters?
Dann wäre es leicht einen Code zu generieren bestehend aus dem ausgewählten Standort, dem aktuellen Datum (als Zahl) und dem ausgewählten Mitarbeiter. (natürlich die jeweiligen Kürzel)
Dann muss man nicht jedesmal einen Code auswählen, von dem man ohnehin nicht weiß, ob er schon mal vergeben wurde, sondern würde jedesmal einen neuen kreieren.
Gruß Oisse
AW: Verschlüsselung
12.01.2021 11:05:46
Philipp
Hallo und guten Morgen - erstmal ein großes Danke dafür, dass ihr immer noch da seid :)
Also der Standort ist und bleibt immer gleich.(nicht vom Benutzer änderbar) Bei erstmaliger Öffnung der Excelmappe kommt eine Userform, in der Mann einen Standort auswählen kann. Dieser wird dann in eine Excel Tabelle eingetragen und bleibt daher immer gleich. (Z.B.: Berlin = Q8). Dieser Wert steht dann für immer da drin und kann nicht geändert werden. Jeder Standort druckt sein eigenes Kürzel.
Das Datum wird mittels =SVERWEIS() und =Heute() in einer Tabelle verglichen. Folglich gibt er jeden Tag ein anderen Code aus. Dieser ändert sich - logischerweise - nur täglich. (nicht vom Benutzer änderbar)
Mein Programm arbeitet ganz simpel. Bestehende aus mehreren Textboxen bzw. CommandButtons.
Alles was ich in meiner Userform in die Textboxen eingeben, wird per Knopfdruck in die Excel Tabelle eingetragen. (Z.B.: Name des Produktes, Beschreibung und ein per Hand eingetragenes Datum. Ein weiterer Knopf löst dann den Druckbefehl aus und druckt nun den bestimmten Bereich. Auf den Rechnern ist nur ein Drucker installiert, daher muss ich keine Druckerauswahl treffen. (Das Etikett sieht dann aus wie die Tabelle mit dem Namen "Etikett". Genauso schreibt der Mitarbeiter ganz simpel seine Nummer in die Textbox der Userform, die wird dann in das Etikett geschrieben. Da steckt keine Datenbank dahinter. Trägt mein Mitarbeiter also eine falsche Nummer ein, so steht entsprechend auch die falsche Nummer drauf. Macht er Rechtschreibefehler so steht dieser Fehler auf dem Etikett.
PS.: Die Userform war in der Mappe nicht mit dabei.
--------
Nun aber zum eigentlichen Problem - Es gibt jedoch einigen Informationen, die ich verschlüsselt mit aus das Etikett drucken möchten.
Informationen wie: Wer hat das gedruckt, von welchem Standort kam das Etikette und an welchem Tag,
Du musst dir das so vorstellen - Mit diesem Code möchte ich später einmal überprüfen können,
a) welcher Mitarbeiter dafür verantwortlich war (z.B.: Produkt sieht schlecht verarbeitet aus)
b) von welchem Standort wurde gedruckt (z.B.: Kunde möchte das Produkt umtauschen - das Etikette wurde aber von einem anderen Standort gedruckt)
c) an welchem Tag wurde das Etikett wirklich gedruckt (z.B.: Mitarbeiter hat über Jahreswechsel versehentlich 2020 - durch fehlerhafte händische Eingabe- auf die Etikette gedruckt - bei Lebensmittel mit MHD ist dies schlecht)
Daher habe ich die Tabelle "Datenbank" erstellt. Mit allen möglichen Kombinationen -bestehend aus 13 Standorte, 366 Tage und 4500 Mitarbeiter. Es kann ja sein, dass Mitarbeiter xyz an einem Tag an 13 verschiedenen Standorten am gleichen Tag ein Etikett druckt.
Wieder wird per Knopfdruck der Inhalt von der Userform in die Zellen I1:J4 geladen.
Der Standort wird bei erstmaliger Installation des Programms fest eingebrannt.
Die Uhrzeit ist die vom System.
Die Personalnummer wird vom Benutzer selbst in der Userform eingegeben . (Wie oben beschrieben - macht er einen Fehler, steht es auch falsch drauf)
Per =SVerweis und er danebenstehenden "Verschlüsselungstabelle" wird in der Zeile L1:M4 ein entsprechender Code generiert. z.B.: Q8-79-R92
Dieser wird mittels

=((Datenbank!M2)&"-"&(Datenbank!M3)&"-"&(Datenbank!M4)) 
einfach in die Zelle C7 der Tabelle "Etikett" übertragen. Drückt mein Mitarbeiter in der Userform jetzt auf Drucken so bekommt er ein Etikette mit Produkt, Beschreibung, Datum (alles von Hand eingegeben) und einen geheimen Code (der mir sagt - wann wurde das wirklich gedruckt, von welchem Mitarbeiter, von welchem Standort) .
----
Kommt ein Kunde zu mir und zeigt mir sein Etikett, weil das Produkt eine schlechte Qualität aufweist, so möchte ich jetzt, egal ob ich am Standort 1.....2.....3... oder Standort.... 10 bin diesen geheimen Code auslesen.
Da die Userformen aber alle LOKAL laufen und keine Anbindung zum Internet haben, wollte ich jetzt per selbstgebauter Suchfunktion (siehe die Userform bestehend aus Listbox und Textfeld) diesen Code einfach entschlüsseln können.
D.H.: ich öffne die Userform geben den Code ein und es zeigt mir wieder aufgesplittet an - welcher Standort - Datum - Mitarbeiternummer damals eingegeben wurde.
Ursprünglich wollte ich daher alle Möglichen Kombinationen (Codes) in eine Spalte schreiben und danebenstehend entschlüsselt die Bedeutung. Dies geht aber leider nicht, da es zu viele Möglichkeiten / Codekombinationen gibt.
Rein theoretisch könnte ich die versteckten Daten auch so mit auf das Etikett schreiben. Ein fremder Kunde könnte nichts mit Berlin (Standort 1) - 12.01. - 100005 anfangen. Jedoch möchte ich die besagten Informationen verschlüsselt dahaben.
AW: Verschlüsselung
12.01.2021 11:36:17
Philipp
Hallo Chris auch an dich erstmal Danke für die Hilfe!
Genau so soll die Entschlüsselung funktionieren.
Nur ich suche jetzt eine Möglichkeit - am besten eine extra Userform - wo ich über eine Textbox einen x-beliebigen Code z.B.: Q8-79-R92 wieder entschlüsseln kann.
Mit deiner INDEX Formel würde das gut klappen.
Ich gebe in der Userform in die Textbox den Code ein - dieser sollte dann in eine extra Tabelle eingetragen werden (nicht in das Feld des Etiketts) - daneben steht dank der INDEX Formel der entschlüsselte Code - und dieser soll wieder in der Userform angezeigt werden.
Ich glaube das ist die Lösung :)))))))))))
oder wüsstest du auf Anhieb eine Code dafür, damit dieser Zwischenschritt - Speichern in Excel Tabelle und auslesen aus Exceltabelle umgangen wird.
PS.: Wenn möglich sollte in der Userform mit der Eingabe des ersten Buchstabens die Entschlüsselung begonnen werden. Es soll also nicht durch das Drücken eines Commandbuttons sondern automatisch entschlüsselt werden :)
Tausend Dank
AW: Verschlüsselung
12.01.2021 11:46:05
ChrisL
Hi Philipp
Formeln lassen sich immer auch nach VBA übersetzen.
ungetestet:
Cells(Worksheets("Datenbank").Columns(1),Application.Match(Left(Range("C7"),2),Worksheets("Datenbank").Columns(2),0),1)
WENNFEHLER
https://docs.microsoft.com/en-us/office/vba/api/excel.worksheetfunction.iferror
TEIL = MID
RECHTS = RIGHT
Zu deinem PS fällt mir im Moment nichts ein.
cu
Chris
AW: Verschlüsselung
12.01.2021 10:34:35
Oisse
Ich habe mal einen Vorschlag erstellt.
Im Tabellenblatt Etiketten kannst du per Button das Formular öffnen.
Dort steht das Listenfeld für die Auswahl des Standortes bereit.
Die Mitarbeiternummer soll der MA selber eingeben.
Mit dem Button wird die Etikettennummer erzeugt und eingetragen in der Tabelle "entschl" wird der code entschlüsselt.
Passt das so?
https://www.herber.de/bbs/user/142939.xlsm
Gruß Oisse
AW: Verschlüsselung
12.01.2021 11:21:29
Philipp
Huhu - genauso arbeitet meine Userform auch - nur das der Standort nicht mehr verändert werden kann (wird per erstmaliger Öffnung der USerform festgelegt). Genau wie in deiner Form soll der Mitarbeiter seine Nummer eingeben und das wird dann alles per Code auf das Etikett "Gedruckt"
Genau wie in deiner Datei - alles perfekt.
Nur und das ist das eigentliche Problem - wie kann ich den Code jetzt entschlüsseln.
Ich suche eine Art Suchfunktion, die mir den Code in die 3 Hauptinfos aufsplittet.
Deshalb dachte ich anfangs an eine Tabelle die so aussieht
Q8-HY-R92 Standort 1 01. Jan 100000
Q8-Hy-PH5 Standort 2 01. Jan 100001
Q8-HY-PK9 Standort 3 01. Jan 100002
Q8-HY-7OG Standort 4 01. Jan 100003
Q8-HY-RKJ Standort 5 01. Jan 100004
Q8-HY-ZZC Standort 6 01. Jan 100005
Q8-HY-MH6 Standort 7 01. Jan 100006
mit Millionen Werten - halt alle Kombinationen, die man schön in einer Listbox anzeigen lassen kann und per Suche in der Textbox herausfiltern kann.
Das geht nun leider nicht. Deswegen möchte ich irgendwie eine Suchfunktion haben, die Spaltenweise den Code vergleicht.
Eine Möglichkeit wäre auch, dass ich den Code Q8-HY-MH6 in eine 3 Textboxen eingeben und darunter entsprechend der Code entschlüsselt wäre
Bsp.
1Textbox - Q8 = Standort 1
2Textbox - HY = 01.01
3Textbox - MH6 = 100000
das würde sogar sehr einfach funktionieren und wäre eine Option, ich suche aber eher eine Möglichkeit, den gesamten Code mit einmal entschlüsseln zu können, ohne das ich den Code händisch unterteilen und in einzelne Textboxen eintragen muss.
AW: Verschlüsselung
12.01.2021 11:38:00
Oisse
Also zunächst einmal steht dein entschlüsselter Code bereits in der Tabelle "entschl"
weil der Code und seine Entschlüsselung beim Erzeugen des Etikettes bereits dort eingetragen wird.
Wenn du also nach einem Code suchst, findest du ihn bereits hier. Du müsstest nur danach filtern.
Wenn du aber vorhast, den code in ein Formular einzugeben und dann erst in den Tabellenblatt einzutragen, gib Bescheid.
Gruß Oisse
AW: Verschlüsselung
12.01.2021 11:45:19
Philipp
Also der Code wird beim Erzeugen dort nicht eingetragen - Weil das Programm läuft lokal, ich würde also als Standort 1 nicht sehen wenn Standort 10 etwas druckt.
Das was du in der Tabelle entschl. siehst, war mein Versuch, alle Kombinationen aufzuschreiben (sind ein paar Millionen) mit der passenden Übersetzung. (Die man dann per Userform Suchprogramm in einer Listbox suchen kann)
Wie du in deinem letzten Satz bereits erwähnt hast, möchte ich - am besten in einer neuen Userform - diesen Code in eine Textbox eingeben (als ganzen Code und nicht unterteilt 3 Stücke in 3 Textboxen) - und in der gleichen Form soll mir dann das Ergebnis angezeigt werden. (Wenn möglich automatisch und ohne Click_CommandButton1.
***
Ich glaube ich hatte ein großen Denkfehler in der ganze Sachen gehabt. Sorry schonmal dafür
AW: Verschlüsselung
12.01.2021 15:16:18
Philipp
Hallo Oisse..
Super ja genau so soll es sein!
Vielen Dank jetzt kann ich lokal den Code eingeben und ich bekomme wieder heraus, was für Standort, für Mitarbeiter und für Datum eingegeben wurden!
Super vielen Dank und sorry für das Wirr Warr :)
Sehr
12.01.2021 15:36:22
Oisse
gerne.
Gruß Oisse
AW: Verschlüsselung
11.01.2021 17:37:58
ChrisL
Hi Philipp
Kann man schon.
MsgBox "Datensatz gespeichert. Passwort: Fix-Fix-" & strPW
oder
MsgBox "Datensatz gespeichert. Passwort: " & Range("A1") & "-" & Range("B1") & "-" & strPW
oder
MsgBox "Datensatz gespeichert. Passwort: " & Range("A1") & "-" & Format(Range("B1"), "dd.mm.yyyy") & "-" & strPW
Bei der Passwort-Eingabe würde ich wie gehabt nur den letzten Teil eingeben. Jedes mal den fixen Teil einzugeben ist unnötige Schreibarbeit.
cu
Chris
Alternative Power-Query
11.01.2021 14:33:09
ChrisL
Hi Philipp
Dasselbe in Grün mittels Power-Query. Bei Interesse Intro-Video im Netz anschauen und bei Bedarf mit Fragen melden.
https://www.herber.de/bbs/user/142921.xlsx
cu
Chris
AW: Kombination aus 3 Spalten
11.01.2021 14:35:53
Philipp
Danke Oisse, UweD & ChrisL für eure Mühe - hab nun den Code in ein Modul eingegeben und funktioniert Super - Vielen Dank für die Hilfe!!!
Formelarray für jede Excelversion
11.01.2021 15:54:39
lupo1
D1[:F125]: =INDEX(A1:C5;INDEX({1;2;3;4;5};REST((ZEILE(1:125)-1)/5^(3-{1.2.3});5)+1);{1.2.3})
Das Array markieren und mit Strg-Umsch-Eing abschließen.
Bei ungleichen Anzahlen pro Spalte: XL365
11.01.2021 19:07:27
lupo1
D1: =FILTER(
INDEX(A1:C5;INDEX({1;2;3;4;5};REST((ZEILE(1:125)-1)/5^(3-{1.2.3});5)+1);{1.2.3});
(INDEX(A1:C5;INDEX({1;2;3;4;5};REST((ZEILE(1:125)-1)/5^(3-{1});5)+1);{1})0)*
(INDEX(A1:C5;INDEX({1;2;3;4;5};REST((ZEILE(1:125)-1)/5^(3-{2});5)+1);{2})0)*
(INDEX(A1:C5;INDEX({1;2;3;4;5};REST((ZEILE(1:125)-1)/5^(3-{3});5)+1);{3})0))

{1;2;3;4;5} gibt dabei die längste gefüllte Spalte an und lässt sich auch als SEQUENZ(5) schreiben, ZEILE(1:125) entspr. als SEQUENZ(125) .
Aus

A C H
B D I
E J
F
G
wird dann also
A C H
A C I
A C J
A D H
A D I
A D J
A E H
B G J 

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige