28.01.2023, 22:59 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2023, 23:00 von marbec75.)
Guten Abend,
Ich bin neu Hier und befasse mich gerade etwas mit Excel.
Ich habe über Studysmarter (onlinekarteikarten programm) die Möglichkeiten Fragen und antworten als Karteikarten auszugeben die vorher in eine Excel datei eingetragen wurden.
Ich habe eine .txt datei mit sehr vielen Fragen und Antworten , diese möchte ich in Excel einfügen das , dass format mit der Webseite funktioniert.
So ist der Aufbau in der .txt Datei. Es beginnt immer mit einer ID.
ID 14704: Worin begründet sich eine mögliche Abschnittsreparatur ?
Wirtschaftlichkeit
Geringerer Eingriff in die Originalstruktur bei Karosserie.
ID 14700: Welche aussagen zur selbsttragenden Karosserie ist richtig ?
Sie kann in Schalenbauweise ausgeführt sein.
Sie kann in Gerippebauweise (Space Frame) ausgeführt sein.
Sie kann in Rohrbauweise ausgeführt sein.
Das einfügen der TEXTE in eine Excel datei funktioniert und wird auch wie in der .txt datei dargestellt.
nun müsste aber alles was in den folgenden zeilen steht bis zur nächsten ID eine Spalte nach rechts in der selben Zeile, sind es zwei antworten dann die zweite antwort weiter eine spalte in der selben zeile usw.
Ich denke das anschauen der Exceldatei wäre sehr verständlich, da es sich um sehr viele Fragen haneldet (ca. 2000 ) wäre das super wenn jemand eine lösung hätte
29.01.2023, 02:08 (Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2023, 02:09 von Ralf A.)
Hi Markus,
folgenden Code (auf Deiner Vorgabe aufbauend) in das Modul der betreffenden Tabelle:
Code:
Option Explicit
Sub Aufteilen()
Dim rng As Range, ofs As Byte, var, zeile As Long, blnID As Boolean, delAdr As String
Set rng = Range("A1:A" & Cells.SpecialCells(xlLastCell).Row)
If Not rng Is Nothing Then
For Each var In rng
If var <> "" Then
If Left(var, 3) = "ID " Then
ofs = 1: zeile = var.Row: blnID = True
Else
If blnID Then
ofs = ofs + 1
Cells(zeile, ofs) = var
End If
End If
Else
blnID = False
End If
Next
End If
rng.AutoFilter Field:=1, Criteria1:="<>ID *", Operator:=xlAnd
rng.SpecialCells(xlCellTypeVisible).Rows.Delete shift:=xlShiftUp
rng.AutoFilter
Set rng = Nothing
End Sub
Da die überflüssigen Zeilen auch gelöscht werden, also vorher eine Sicherungskopie anlegen, falls das nicht gewünscht wird...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
29.01.2023, 09:43 (Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2023, 09:45 von marbec75.)
Hallo Ralf,
danke für deine schnelle Antwort. ich würde das gerne ohne Markos oder VB Code realisieren wollen.
Ich habe gestern noch folgenden Code versucht , aber er funktioniert einfach nicht obwohl er von der Logik her richtig sein sollte:
=WENN(RECHTS(A1,1)="?",B1=A2,A2="")
Ist in Zeile A1 das letzte Zeichen ein ? dann verschiebe die Zeile darunter nach b1 (nächste zeile B2 usw.. ) solange bis wieder eine Zeile mit ID beginnt.
Ich kriege das nicht hin.
Weil es könnten auch 2-3 Antworten unter einer Frage sein....
29.01.2023, 11:14 (Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2023, 11:15 von Ralf A.)
(29.01.2023, 09:43)marbec75 schrieb: ... ich würde das gerne ohne Markos oder VB Code realisieren wollen.
Weshalb denn?
Das hättest Du auch vorher sagen können, dann hätte ich mir die Arbeit nicht machen brauchen...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:1 Nutzer sagt Danke an Ralf A für diesen Beitrag 28 • marbec75
29.01.2023, 12:28 (Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2023, 12:41 von snb.)
Vermeide leere Zeilen end Spalten in Excel.
Und verwende VBA wo geeignet.
Code:
Sub M_snb()
For Each it In Columns(1).SpecialCells(2).Areas
If Left(it.Cells(1), 2) = "ID" Then
sn = Application.Transpose(it.Offset(-1).Resize(it.Rows.Count + 1))
sn(1) = Left(sn(2), InStr(sn(2), ":") - 1)
sn(2) = Replace(sn(2), sn(1) & ": ", "")
Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, UBound(sn)) = sn
End If
Next
End Sub
eventuell hast Du die eine oder andere Funktion nicht. Nehme mal die lange Formel auseinander und probiere die Bestandteile soweit es geht, einzeln. Z.B. =WEGLASSEN(...) usw.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)