Makro: was eine zahl senkrecht in zellen aufteilt
Hallo Leute,
Ich weiss das der Titel sehr verwirrend ist und ja es ist sehr kompliziert.
Ich versuche es zu erklären.
Ich bekomme eine xml datei wo input/output einer maschine aufgezeichnet werden.
Im grunde besteht das aus den Zahlen 1 - 10 vertikal geschrieben. (warum auch immer das so programmiert wurde)
1 5 usw...
2 2
3 1
4 5
5 3
6 1
7 10
8 1
9 6
10 2
die Zahl sagt jedes mal aus wann ein Input stattgefunden hat. alles davor war ein output.
Jetzt muss ich zwecks Statisik und evaluierung was wiederum von einem anderen Programm benötigt wird die Zahlen in o (output) und i (input) aufsplitten
Beispiel:
i = Input
o= output
1 2 3 4 5 6 usw...
i o o o o o
i o o o o
i o o o
i o o
i o
i
Bis jetzt kopiere ich die Zahlen in eine Excel Datei und muss händisch jede dieser Zeilen manuell umschreiben
Beispiel:
1
2
3
4
5
ist:
i
o
i
o
o
i
o
o
o
i
o
o
o
o
i
Gibt es ein Makro was das für mich machen kann. Das ich nur in einem Excel Blatt die Zahlen reinkopiere (zb.A-Z) und in einem anderen Blatt es auf (A-Z) in i-o umwandelt? (siehe bild)
LG
Ich weiss das der Titel sehr verwirrend ist und ja es ist sehr kompliziert.
Ich versuche es zu erklären.
Ich bekomme eine xml datei wo input/output einer maschine aufgezeichnet werden.
Im grunde besteht das aus den Zahlen 1 - 10 vertikal geschrieben. (warum auch immer das so programmiert wurde)
1 5 usw...
2 2
3 1
4 5
5 3
6 1
7 10
8 1
9 6
10 2
die Zahl sagt jedes mal aus wann ein Input stattgefunden hat. alles davor war ein output.
Jetzt muss ich zwecks Statisik und evaluierung was wiederum von einem anderen Programm benötigt wird die Zahlen in o (output) und i (input) aufsplitten
Beispiel:
i = Input
o= output
1 2 3 4 5 6 usw...
i o o o o o
i o o o o
i o o o
i o o
i o
i
Bis jetzt kopiere ich die Zahlen in eine Excel Datei und muss händisch jede dieser Zeilen manuell umschreiben
Beispiel:
1
2
3
4
5
ist:
i
o
i
o
o
i
o
o
o
i
o
o
o
o
i
Gibt es ein Makro was das für mich machen kann. Das ich nur in einem Excel Blatt die Zahlen reinkopiere (zb.A-Z) und in einem anderen Blatt es auf (A-Z) in i-o umwandelt? (siehe bild)
LG
8 Antworten
- LÖSUNG Lochkartenstanzer schreibt am 11.01.2021 um 12:17:52 Uhr
- LÖSUNG semper schreibt am 11.01.2021 um 13:39:39 Uhr
- LÖSUNG 147069 schreibt am 11.01.2021 um 13:43:17 Uhr
- LÖSUNG semper schreibt am 11.01.2021 um 13:54:26 Uhr
- LÖSUNG 147069 schreibt am 11.01.2021 um 13:55:18 Uhr
- LÖSUNG semper schreibt am 11.01.2021 um 14:38:45 Uhr
- LÖSUNG 147069 schreibt am 11.01.2021 um 16:46:14 Uhr
- LÖSUNG semper schreibt am 11.01.2021 um 14:38:45 Uhr
- LÖSUNG 147069 schreibt am 11.01.2021 um 13:55:18 Uhr
- LÖSUNG semper schreibt am 11.01.2021 um 13:54:26 Uhr
- LÖSUNG Lochkartenstanzer schreibt am 11.01.2021 um 14:00:26 Uhr
- LÖSUNG 147069 schreibt am 11.01.2021 um 13:43:17 Uhr
- LÖSUNG semper schreibt am 11.01.2021 um 13:39:39 Uhr
LÖSUNG 11.01.2021 um 12:17 Uhr
LÖSUNG 11.01.2021 um 13:39 Uhr
Hallo Lochkartenstanzer,
Ich versuche es:
siehe Bild unten:
In Spalte A stehen mehrere Zahlen
3
2
1
1
5
2
Jetzt muss ich diese zahlen in outputs und inputs aufteilen. Das heißt die Zahlen geben immer an wann der Input stattgefunden hat und alles davor war ein output.
Die 3 hat 2x Output und 1 x Input am ende also (o o i)
Die 2 hat 1x Output und 1 x Input also (o i)
Die 1 hat keinen Output sondern gleich einen Input also (i)
Die 5 hat 4 x Output und 1 x Input also (o o o o i)
usw..
Sprich wenn auf Blatt1 A1 eine 3 steht
soll am anderen Blatt2 :
A1=o
A2=o
A3=i
stehen und Blatt1 A2=2 wird gleich drangehängt:
A1=o <--- Anfang von 3
A2=o
A3=i <---3 Ende von 3
A4=o <--- Anfang von 2
A5=i <--- Ende von 2
usw....
zb:
das Makro sollte schauen was für eine zahl in Blatt 1 A1 steht und danach in die nächst freie zelle in Blatt 2 Spalte A suchen und für eine 2 zb. ein o schreiben danach eines hinunter und ein i schreiben.Wenn das fertig ist in die nächste zelle schauen was das für eine Zahl ist und wieder gleich in der nächst leeren zelle wieder reinschreiben.
Ich hoffe ich habe das besser erklärt?
Ich versuche es:
siehe Bild unten:
In Spalte A stehen mehrere Zahlen
3
2
1
1
5
2
Jetzt muss ich diese zahlen in outputs und inputs aufteilen. Das heißt die Zahlen geben immer an wann der Input stattgefunden hat und alles davor war ein output.
Die 3 hat 2x Output und 1 x Input am ende also (o o i)
Die 2 hat 1x Output und 1 x Input also (o i)
Die 1 hat keinen Output sondern gleich einen Input also (i)
Die 5 hat 4 x Output und 1 x Input also (o o o o i)
usw..
Sprich wenn auf Blatt1 A1 eine 3 steht
soll am anderen Blatt2 :
A1=o
A2=o
A3=i
stehen und Blatt1 A2=2 wird gleich drangehängt:
A1=o <--- Anfang von 3
A2=o
A3=i <---3 Ende von 3
A4=o <--- Anfang von 2
A5=i <--- Ende von 2
usw....
zb:
das Makro sollte schauen was für eine zahl in Blatt 1 A1 steht und danach in die nächst freie zelle in Blatt 2 Spalte A suchen und für eine 2 zb. ein o schreiben danach eines hinunter und ein i schreiben.Wenn das fertig ist in die nächste zelle schauen was das für eine Zahl ist und wieder gleich in der nächst leeren zelle wieder reinschreiben.
Ich hoffe ich habe das besser erklärt?
LÖSUNG 11.01.2021, aktualisiert um 17:13 Uhr
Sub NummernErsetzen()
Dim wsSource As Worksheet, wsTarget As Worksheet, cell As Range, rngCell As Range, i as Long
Set wsSource = Sheets(1)
Set wsTarget = Sheets(2)
With wsSource
For Each cell In .UsedRange
If cell.Value <> "" And IsNumeric(cell.Value) Then
Set rngCell = wsTarget.Cells(Rows.Count, cell.Column).End(xlUp)
If rngCell.Value <> "" Then Set rngCell = rngCell.Offset(1, 0)
For i = 1 To CInt(cell.Value)
rngCell.Value = IIf(i <> CInt(cell.Value), "o", "i")
Set rngCell = rngCell.Offset(1, 0)
Next
End If
Next
End With
End Sub
LÖSUNG 11.01.2021 um 13:54 Uhr
LÖSUNG 11.01.2021, aktualisiert um 13:56 Uhr
LÖSUNG 11.01.2021 um 14:00 Uhr
LÖSUNG 11.01.2021 um 14:38 Uhr
Funktioniert vielen Dank.
2 kleine fragen noch:
1.
bis jetzt funktioniert es nur wenn ich das Makro manuell starte. kann man es einstellen das es sofort wenn man eine Zahl eintippt funktioniert?
2.
War meine schuld habe ich vergessen zu schreiben bei 10 gibt es am Ende kein i sondern nur 10x o (o o o o o o o o o o) . kann man das noch irgendwie einstellen?
Mit dem ist mir schon sehr geholfen vielen dank.
2 kleine fragen noch:
1.
bis jetzt funktioniert es nur wenn ich das Makro manuell starte. kann man es einstellen das es sofort wenn man eine Zahl eintippt funktioniert?
2.
War meine schuld habe ich vergessen zu schreiben bei 10 gibt es am Ende kein i sondern nur 10x o (o o o o o o o o o o) . kann man das noch irgendwie einstellen?
Mit dem ist mir schon sehr geholfen vielen dank.
LÖSUNG 11.01.2021, aktualisiert um 16:48 Uhr
Zitat von semper:
1.
bis jetzt funktioniert es nur wenn ich das Makro manuell starte. kann man es einstellen das es sofort wenn man eine Zahl eintippt funktioniert?
Ja. Nimmst du das Worksheet_Change Event dafür1.
bis jetzt funktioniert es nur wenn ich das Makro manuell starte. kann man es einstellen das es sofort wenn man eine Zahl eintippt funktioniert?
Private Sub Worksheet_Change(ByVal Target As Range)
....
End Sub
2.
War meine schuld habe ich vergessen zu schreiben bei 10 gibt es am Ende kein i sondern nur 10x o (o o o o o o o o o o) . kann man das noch irgendwie einstellen?
Dann hast du die Zelle als Text formatiert anstatt Zahl, denn als Zahl funktioniert es problemlos. Habe oben aber noch zusätzlich eine explizite Umwandlung der Werte in einen Integer eingebaut.War meine schuld habe ich vergessen zu schreiben bei 10 gibt es am Ende kein i sondern nur 10x o (o o o o o o o o o o) . kann man das noch irgendwie einstellen?