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

Headezimaldaten bearbeiten

Headezimaldaten bearbeiten
01.04.2015 12:07:00
Greg
Hallo Zusammen,
ich habe eine Nuß zu knacken, bei der ich eure Hilfe brauche.
Es geht darum, dass Daten aus einem Hexadezimal Datenfeld in ein anderes kopiert werden sollen.
Die Datenfelfer (Quelle und Ziel) sind exakt gleich groß (16x65533). Beide sind in ein Excel Datenblatt nebeneinander eingeladen.
Das Ziel des zu erstellenden Makros ist, Daten (einzelne Zellen oder auch mehrere Daten hintereinander) aus der Quelldatei in die Zieldatei zu kopieren. Die Datenpakete sind bei Quell- und Zieldatei an unterschiedlichen Stellen untergebracht. Es existiert eine Übersicht der Datenpakete (=Variablen) die die Anfangsadresse angibt sowie die Größe der aufeinanderfolgenden Werte (=Zellen).
Die zu kopierenden Daten können in der Tabelle durch ein "X" ausgewählt werden; X bedeutet also dass diese Variable kopiert werden muss.
Das Makro sollte also die Tabelle durchgehen dort die Adressen in der Quelldatei lesen, die Daten aus der Quelldatei kopieren, die Zieladresse lesen und an der Zieldatei die kopierten Werte einfügen.
Ich habe in der zweiten Spalte bzw. ersten Zeile die Spalten- bzw Zeilen adressen im Hex Format angegben (dachte das hilft velleicht). Vielleicht ist das auch unnötig und jemand weiß wie man direkt mit der Gesamtadresse arbeitet. Ich weiß es leider nicht :-)
Ich hoffe es kann mir jemand helfen, ich verzweifle so langsam an der Aufgabe :-)
Fanke & Gruß
Greg

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
lad die Mappe hoch. owT
01.04.2015 12:09:21
Rudi

AW: Headezimaldaten bearbeiten
01.04.2015 13:03:58
Greg
Hallo,
habe die Mappe gerade hochgeladen, ich musste jedoch die Hex Daten beschneiden da die Mappe sonst für den upload zu groß wurde. bei 16x65533 größe pro Datenfeld ist das einfach zu groß.
das führt natürlich dazu dass die Adressen in der Liste nicht mehr vorhanden sind, das prinzip ist aber ja unverändert (denke ich).
Danke schonmal & VG
Greg

hochgeladen: wo?
01.04.2015 13:23:36
Rudi

AW: Headezimaldaten bearbeiten
01.04.2015 13:27:17
Greg
Hallo,
ja irgendwie habe ich das mit dem upload nicht so auf den ersten Versuch geschafft, sollt ebare jetzt verfügbar sein.
Danke & Gruß

AW: Headezimaldaten bearbeiten
01.04.2015 13:51:51
Greg
Ich sehe gerade, daß ich an meiner Rechtschreibung arbeiten muss bzw. nochmal lesen bevor ich abschicke - sorry! :-)

AW: Headezimaldaten bearbeiten
02.04.2015 11:04:06
Greg
Hallo zusammen,
hat keiner eine Idee ? *verzweifel*
VG
Greg

AW: Headezimaldaten bearbeiten
03.04.2015 05:23:05
Michael
Hallo Greg,
ich verstehe die Aufgabenstellung nicht ganz: Du hast in AM9 "10x12" stehen, das sieht nach einem *rechteckigen Bereich* von Werten aus, nur willst Du Dir den ab Spalte 9 holen? Es sind aber nur die Spalten 9-15 vorhanden, das reicht nur max. für eine 7x12-Matrix.
Schöne Grüße,
Michael

Anzeige
AW: Headezimaldaten bearbeiten
03.04.2015 08:13:50
Greg
Hallo Michael,
Danke für deine Zeit!
Die Spalte mit der Angabe des Felds (zB10x12) sind für dieses Makro nicht wichtig. Man muss das so verstehen, dass die Daten (in dem Fall 120 Zahlen)hintereinander geschrieben werden, mit der Angegebenen Anfangsadresse. Wenn man am ende der Zeile angekommen ist, so muss man in die nächste Zeile springen. Das macht die Sache (zumindest für mich) nicht einfacher :-).
Das bedeutet dass man beim Kopieren als auch beim Einfügen beachten muss, an welchem Punkt man gerade im Datenfeld ist da man am Ende der Zeile (abhängig von der Datenanzahl) in die nächste springen muss.
Um deine Frage nach den Datenblöcken aber zu beantworten: Die Software die die Daten später verwendet liest sie nacheinander ein und stellt sie als 10x12 dar.
Vielleicht hilft das ja weiter.
Vielen Dank nochmal & VG
Greg

Anzeige
aha!
03.04.2015 17:01:48
Michael
Hallo Greg,
das Problem scheint mir überschaubar zu sein, und ich kümmere mich gern drum, nur wird es heute nichts mehr, derweil ich aus dem Haus muß.
Das nur vorab: ich hab wenig Lust, mich mit hex-en auseinanderzusetzen und ewig umzurechnen: entweder die Angaben erfolgen in "normaler" Notation (A1)oder in Zeile/Spalte-Nr. dezimal - aber da füge ich testhalber ein paar Werte ein, wie sie mir gerade passen - Du wirst dann schon damit zurechtkommen.
Schöne Grüße,
Michael

AW: aha!
03.04.2015 18:05:56
Greg
Hallo Michael,
vielen Dank nochmal dass auch du dir für mich die Zeit genommen hast mir zu helfen!
Der Code vom Erich löst die Aufgabe wie gesagt.
VG & frohe Ostern
Gregor

Anzeige
AW: aha!
04.04.2015 16:46:25
Michael
Hallo Gregor,
vielen Dank für Dein Feedback.
Ich hatte beim "Abarbeiten" der Forums-Emails übersehen, daß Erich bereits eine Lösung formuliert hat.
Erledigte Aufgaben sind doch die schönsten.
Happy Exceling, und auch schöne Feiertage,
Michael

Codevorschlag
03.04.2015 11:44:35
Erich
Hi Greg,
probier mal:

Option Explicit
Sub VarKop()
Dim lngQ As Long, arQ, qr As Long, qc As Long
Dim nn As Long, zr As Long, zc As Long
Dim lngA As Long, arA, aa As Long
lngQ = Cells(Rows.Count, 1).End(xlUp).Row - 2
arQ = Cells(3, 3).Resize(lngQ, 16)
lngA = Cells(Rows.Count, 37).End(xlUp).Row - 2
arA = Cells(3, 37).Resize(lngA, 8)
For aa = 1 To lngA
If arA(aa, 1) = "X" Then
nn = 0
qr = CLng("&H" & Left(arA(aa, 5), Len(arA(aa, 5)) - 1))
qc = CLng("&H" & Right(arA(aa, 5), 1))
zr = CLng("&H" & Left(arA(aa, 8), Len(arA(aa, 8)) - 1))
zc = CLng("&H" & Right(arA(aa, 8), 1))
Do While nn  15 Then zc = 0: zr = zr + 1
qc = qc + 1
If qc > 15 Then qc = 0: qr = qr + 1
nn = nn + 1
Loop
End If
Next aa
End Sub
Die auskommentierten Zeilen färben Quell- und Zielbereiche ein. Das funzt aber nur für die ersten paar Aufträge...
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Codevorschlag
03.04.2015 18:03:58
Greg
Hallo Erich,
Vielen vielen Dank!! funktioniert einwandfrei.
Unglaublich, wie man mit ein paar zeilen das hinbekommt. Ich habe einen ganzen Tag pribiert mit schleifen etc. etc.
Ich bin total happy!!! cool!! *freu*
Nachmals vielen Dank und frohe Ostern!!!!!
Greg

zwei Codevarianten
07.04.2015 16:38:22
Erich
Hi Greg,
der von mir gepostete Code enthielt noch ein paar völlig nutzlose Zeilen (die mit lngQ und arQ).
In der heutigen Version sind die eliminiert.
Nachteil des Codes ist, dass dabei der Wert jeder Zelle einzeln übertragen wird. Das ergibt sehr viele Änderungen
im Tabellenblatt. Geschickter und schneller ist die blockweise Übertragung der Werte von rechteckigen Zellbereichen.
Das passierr in der Prozedur VarKop2().

Sub VarKop()
Dim lngA As Long, arA, aa As Long
Dim qr As Long, qc As Long, nn As Long, zr As Long, zc As Long
lngA = Cells(Rows.Count, 37).End(xlUp).Row - 2
arA = Cells(3, 37).Resize(lngA, 8)
'  ActiveSheet.UsedRange.Interior.ColorIndex = xlColorIndexNone
For aa = 1 To lngA
If arA(aa, 1) = "X" Then
nn = 0
qr = CLng("&H" & Left(arA(aa, 5), Len(arA(aa, 5)) - 1))
qc = CLng("&H" & Right(arA(aa, 5), 1))
zr = CLng("&H" & Left(arA(aa, 8), Len(arA(aa, 8)) - 1))
zc = CLng("&H" & Right(arA(aa, 8), 1))
Do While nn  15 Then zc = 0: zr = zr + 1
qc = qc + 1
If qc > 15 Then qc = 0: qr = qr + 1
nn = nn + 1
Loop
End If
Next aa
End Sub
Sub VarKop2()
Dim lngA As Long, arA, aa As Long, ff As Long, ffa
Dim arE() As Long, xMin As Long
Dim dqv As Long, dqb As Long, dzv As Long, rqb As Long, cqb As Long
Dim qr As Long, zr As Long, qc As Long, zc As Long
Dim ii As Long, jj As Long
Dim nachR As Long, nachU As Long
lngA = Cells(Rows.Count, 37).End(xlUp).Row - 2
arA = Cells(3, 37).Resize(lngA, 8)
ffa = Array(38, 4, 36, 8, 24, 44)
'  ActiveSheet.UsedRange.Interior.ColorIndex = xlColorIndexNone
For aa = 1 To lngA
If arA(aa, 1) = "X" Then
ReDim arE(arA(aa, 4) - 1)
For ii = 0 To arA(aa, 4) - 1
arE(ii) = ii
Next ii
dqv = CLng("&H" & arA(aa, 5))
dqb = dqv + arA(aa, 4)
dzv = CLng("&H" & arA(aa, 8))
rqb = Fix(dqb / 16)
cqb = dqb Mod 16
xMin = Application.Min(arE)
Do While xMin 
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: zwei Codevarianten
07.04.2015 16:51:26
Greg
Hi Erich,
funktioniert prima. Vielen Vielen Dank!!!!
Grüße aus dem Rheinland
Greg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige