semper
Goto Top

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)

input-output1
input-output2

LG

Content-ID: 639646

Url: https://administrator.de/contentid/639646

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 11.01.2021 um 12:17:52 Uhr
Goto Top
Zitat von @semper:

Ich versuche es zu erklären.

Moin,

ich zumindest habe nicht verstanden, wie aus den Zahlen i und o werden (sollen). Versuch es mit einer besseren Erklärung.

lks
semper
semper 11.01.2021 um 13:39:39 Uhr
Goto Top
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....

input-output3
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?
147069
147069 11.01.2021 aktualisiert um 17:13:21 Uhr
Goto Top
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
semper
semper 11.01.2021 um 13:54:26 Uhr
Goto Top
Danke bluewonder für den Code:

Leider bekomme ich eine Fehlermeldung das eine variable nicht definiert ist.

Sorry so gut kenne ich mich mit VBA nicht aus

input-output4
147069
147069 11.01.2021 aktualisiert um 13:56:37 Uhr
Goto Top
Hatte eine Variable vergessen zu deklarieren ist oben korrigiert ...
Lochkartenstanzer
Lochkartenstanzer 11.01.2021 um 14:00:26 Uhr
Goto Top
Zitat von @semper:

Ich hoffe ich habe das besser erklärt?

Ja, jetzt ist es verständlicher.

Bluewonder's skript sollte das tun, was Du willst.

lks
semper
semper 11.01.2021 um 14:38:45 Uhr
Goto Top
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.
147069
147069 11.01.2021 aktualisiert um 16:48:46 Uhr
Goto Top
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ür
Private Sub Worksheet_Change(ByVal Target As Range)
....
End Sub
Der Rest ist Hausaufgabe damit du auch noch deine grauen Zellen etwas in Wallung bringst.
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.