Verbessern Sie die Anzeige der Positionskodierung für Debug-Zwecke, z. B. durch Verwendung von Excel mit einem Zeichen pro Zelle

428
usr-local-ΕΨΗΕΛΩΝ

Ich habe folgendes Problem zu lösen: Ich arbeite mit positionskodierten Dateien. Diese Dateien zeigen Zeichen an bestimmten Positionen in der Zeichenfolge. Jede Zeile ist ein Datensatz, und die Bedeutung eines Zeichens in einer Zeile hängt von seiner Position ab. Um sie zu debuggen und zu beheben, muss ich die Cursorposition in der aktuellen Dateizeile überprüfen.

Die meisten Editoren, einschließlich Notepad ++, zeigen die Spaltenposition in der Datei an. Obwohl es hilfreich ist, möchte ich es einfacher machen.

Ich möchte, dass ein Editor Zeichenpositionen in meinen Dateien hervorhebt.

Ich habe darüber nachgedacht: mit Excel 2010 ein Zeichen pro Zelle.

Wenn Excel mir Idealerweise erlaubt mit einem Text in eine vorformatierte Tabelle einfügen Farben, Grenzen und Überschrift Spalten Ich würde mein Problem gelöst haben. Ich muss jedoch sicherstellen, dass Excel eine Einfügung akzeptiert, indem ich jedes Zeichen in eine Zelle einfügt und zur nächsten Zeile gehe, wenn eine CRLF gefunden wird.

Dies ist ein ziemlich XY-Problem und ich hoffe, ich habe meine Frage am besten gestellt

  • Problem X: Verbesserung der Lesbarkeit von positionskodierten Dateien
  • Problem Y: da Excel ein guter Verbündeter sein könnte, wie ich eine ganze Datei in eine Zell-pro-Charakter mit einem einzigen fügen Sie CTRL+ V?

Beispiel

Da reale Daten in dieser Frage sehr komplex zu posten sind, kann ein generisches Dataset (in der Dokumentation) folgendermaßen ausgedrückt werden:

  • Jede Zeile macht einen einzelnen Datensatz
  • Zeichen 0 ist Datentyp, alphanumerisch
  • Zeichen 1: 8 sind ein Nachname
  • Zeichen 9:15 sind ein Vorname
  • Zeichen 16:30 sind eine Telefonnummer
  • Zeichen 31:38 sind ein Geburtsdatum im Format jjjjMMdd
  • Füllzeichen sind Leerzeichen
  • Zeilen werden mit CRLF abgeschlossen

Beispiel "gültiger" Datensatz (ich schreibe es von Hand)

0SMITH JOHN +13652145896 19780101\r\n 

Nach dem Excel-Beispiel könnte ich diese Daten in farbigen Spalten anzeigen und ein Datenblatt mit Farb- / Rahmenhilfslinien problemlos bearbeiten

1
Dies könnte auch für * stackoverflow * geeignet sein usr-local-ΕΨΗΕΛΩΝ vor 10 Jahren 0
Das Beispiel hilft, danke, dass Sie es hinzugefügt haben. Das sieht aus wie eine Standard-Textdatei mit fester Breite, daher sollte es ziemlich einfach sein, damit zu arbeiten. Wenn Sie über das Bearbeiten der Datei sprechen, führen Sie eine Datenbereinigung durch, um sie für den Import in eine Datenbank / ein anderes Programm vorzubereiten. Wenn ja, benötigen Sie nur eine Datenvalidierung für jede Spalte / jedes Zeichen? dav vor 10 Jahren 0
Nein, ich validiere "von Hand" und kopiere / füge Zellen in eine Textdatei ein, um von einer Anwendung importiert zu werden usr-local-ΕΨΗΕΛΩΝ vor 10 Jahren 0
Ist die Datenvalidierung nur für den Datentyp (z. B. alpha v. Numerisch) oder für die tatsächlichen Daten (z. B. Nachname ist ein realer Name, nicht nur zufällige Zeichen)? dav vor 10 Jahren 0
Der Letzte. Die wahren Spezifikationen sind viel komplexer und ich benötige bestimmte Felder, um bestimmte Codes abzugleichen. Wenn ein bestimmter Code vorhanden ist, müssen einige Felder vorhanden sein, andere nicht. Die vollständige Überprüfung ist bereits beim Importieren von Software implementiert, aber ich muss die Fehlerbehebung erleichtern: Der häufigste Fehler ist eine falsche Anzahl von Leerzeichen usr-local-ΕΨΗΕΛΩΝ vor 10 Jahren 1

3 Antworten auf die Frage

1
usr-local-ΕΨΗΕΛΩΝ

Die folgende Formel scheint beim Anzeigen des Datensatzes gut zu funktionieren

Lokalisiert

=STRINGA.ESTRAI(INDIRETTO(CONCATENA("PASTEME!A";RIF.RIGA()));RIF.COLONNA();1) 

Hand-Internationalisiert (bitte korrigieren Sie die Funktionsnamen in Englisch Excel)

=MID(INDIRECT(CONCATENATE("PASTEME!A",ROW())),COLUMN(),1) 

Jetzt muss ich es nur noch auf das gesamte Blatt kopieren und Formatierung / Umrandung / Farbgebung hinzufügen (Tausende Datensätze in jedem Datensatz).

Das Problem mit dem Formelansatz ist, dass ich Daten auf der Datenmenge nicht einfach bearbeiten kann, aber ich habe zumindest eine klare Vorstellung davon, wo nach Bearbeitung gesucht werden soll und wo ein Fehler in der Datenmenge sein könnte (oder einfach "die Daten sofort verstehen") ")

1
pnuts

Ich konzentriere mich sehr auf "ein Zeichen pro Zelle" und würde eine Vorlage vorschlagen, in der ColumnA von Sheet2: 5 mit Sheet1 gefüllt ist! B: B bis E: E. Dann gruppieren Sie so in jedes Blatt2: 5 B1 =MID($A1,COLUMN()-1,1)und kopieren Sie es nach Bedarf hin und her. Sheet1 ist für Ihre Quelldaten reserviert:

SU603915 example

Wie auch immer, ich habe herausgefunden, dass das Aufteilen des Datensatzes in Teilzeichenfolgen statt in "Einzelzelle pro Zeichen" die Lesbarkeit mehr als bisher verbessert. Upvoted, weil die Frage beantwortet wird usr-local-ΕΨΗΕΛΩΝ vor 10 Jahren 1
TQ. Ich bin nicht überrascht (wunderte sich 'Warum?'!) pnuts vor 10 Jahren 0
0
dav

Am einfachsten ist dies, wenn Sie einfach ein vorformatiertes Excel-Arbeitsblatt (Vorlage) verwenden und die Data>From Text>Fixed WidthOption verwenden. Dadurch können Sie beliebige / alle Zeichen in eine eigene Zelle bringen, und Sie können Ihren Bereich bei einer beliebigen Tabellenzelle starten, die Sie möchten.

Wenn dies eine wiederholte Aufgabe sein sollte, würde ich VBA verwenden, um den Prozess ein wenig zu automatisieren. Möglicherweise werden in einem Dialogfeld nach einer Datei und einem Punkt gefragt, an dem sie eingefügt werden sollen. Der Rest wird jedoch automatisch ausgeführt.

Ich glaube nicht, dass Sie eine der Einfügeoptionen haben, insbesondere CTRLVwas Sie wollen.

Ich glaube, Sie haben meinen Y-Teil teilweise beantwortet: Wenn VBA verwendet werden kann, kann * es * verwendet werden, um die Zeichenfolge, die in die Tabelle eingefügt wird, IMHO zu teilen. Aber ich kenne VBA nicht und ob es das Abfangen des Einfügeereignisses unterstützt, könnte aber ein guter Ausgangspunkt sein. usr-local-ΕΨΗΕΛΩΝ vor 10 Jahren 0
Ich suchte auch nach ein paar Formeln, die mir helfen konnten, eine in eine andere Zelle / Tabelle eingefügte Zeichenfolge aufzuteilen usr-local-ΕΨΗΕΛΩΝ vor 10 Jahren 0
1) Ich denke, wir reden hier über zwei Seiten desselben Themas. Ich bin ziemlich sicher, dass VBA Paste als Teil des Prozesses verwenden kann, aber es wäre nicht Paste, es wäre VBA mit Paste-a minor, aber ich Ich denke, eine wichtige Unterscheidung. 2) Möglicherweise gibt es einige formelle Methoden für die Adressierung von Text, der an anderer Stelle im Arbeitsblatt eingefügt wird. Könnten Sie eine kleine Auswahl Ihrer Daten liefern? Wenn Sie für eine VBA-Lösung offen sind, sollten Sie den Tag hinzufügen. Sie werden wahrscheinlich Ihre Augen zusätzlich einschätzen. dav vor 10 Jahren 0
Ich würde VBA nur als letzten Ausweg verwenden. Tag hinzugefügt usr-local-ΕΨΗΕΛΩΝ vor 10 Jahren 0