Улучшенное отображение позиционного кодирования для целей отладки, возможно, с использованием Excel по одному символу на ячейку

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

Мне нужно решить следующую проблему: я работаю с позиционно-закодированными файлами. Эти файлы показывают символы в определенных позициях в строке. Каждая строка является записью, а значение символа в строке зависит от его положения. Чтобы их отладить и исправить, мне нужно убедиться в положении курсора в текущей строке файла.

Большинство редакторов, включая Notepad ++, отображают положение столбца в файле. Тем не менее, хотя и полезно, я хотел бы сделать это проще.

Я хочу, чтобы редактор так или иначе выделил позиции символов в моих файлах.

Вот о чем я подумал: используя Excel 2010 по одному символу на ячейку.

В идеале, если бы Excel позволил мне вставить текст в предварительно отформатированную таблицу с цветами, границами и столбцами заголовков, я бы решил свою проблему. Но я должен убедиться, что Excel принимает вставку, вставляя каждый символ в ячейку, переходя к следующей строке, когда найден CRLF.

Это довольно XY проблема, и я надеюсь, что задал свой вопрос наилучшим образом

  • Проблема X: улучшить читаемость позиционно-закодированных файлов
  • Проблема Y: учитывая, что Excel может быть хорошим союзником, как мне вставить целый файл в одну ячейку на символ одним CTRL+ V?

пример

Поскольку реальные данные действительно сложно разместить в этом вопросе, общий набор данных может быть выражен (в документации) следующим образом:

  • Каждый ряд делает одну запись
  • Символ 0 - это тип данных, буквенно-цифровой
  • Символы 1: 8 являются фамилией
  • Символы 9:15 - это имя
  • Символы 16:30 - это номер телефона
  • Символы 31:38 - это дата рождения в формате ггггМдд
  • Символы-заполнители - это пробелы
  • Строки заканчиваются CRLF

Пример «правильной» записи (я набираю ее вручную)

0SMITH JOHN +13652145896 19780101\r\n 

Следуя примеру Excel, я мог бы отобразить эти данные в цветных столбцах и легко отредактировать таблицу данных с помощью направляющих цвета / границ.

1
Это может также подойти для * stackoverflow * usr-local-ΕΨΗΕΛΩΝ 10 лет назад 0
Пример помогает, спасибо за добавление. Это похоже на стандартный текстовый файл фиксированной ширины, поэтому с ним должно быть довольно легко работать. Когда вы говорите о редактировании файла, выполняете ли вы очистку данных, чтобы подготовить их для импорта в базу данных / другую программу? Если это так, нужна ли вам проверка данных для каждого столбца / символа? dav 10 лет назад 0
Нет, я проверяю «вручную» и собираюсь скопировать / вставить ячейки в текстовый файл, который будет импортирован приложением usr-local-ΕΨΗΕΛΩΝ 10 лет назад 0
Кроме того, проверка данных только для типа данных (например, альфа против числовых) или для фактических данных (например, Фамилия является реальным именем, а не только случайные символы)? dav 10 лет назад 0
Последний. Реальные спецификации намного сложнее, и я требую, чтобы определенные поля соответствовали заданным кодам, а когда присутствует конкретный код, некоторые поля должны присутствовать, а некоторые другие - нет. Полная проверка уже реализована при импорте программного обеспечения, но мне нужно упростить исправление: наиболее распространенная ошибка - неправильное количество пробелов usr-local-ΕΨΗΕΛΩΝ 10 лет назад 1

3 ответа на вопрос

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

The following formula seems to work fine when displaying the dataset

Localized

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

Hand-Internationalized (please correct function names in English Excel)

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

Now I just have to copy it to the whole sheet and add formatting/bordering/colouring (thousands of records in each dataset)

The problem with the formula approach is that I can't easily edit data on the dataset, but at least I have a clear idea of where to search for editing and where a bug could be in the dataset (or simply "immediately understanding the data")

1
pnuts

Very much focusing on "one-character-per-cell" I'd suggest a template where ColumnA of Sheet2:5 is filled with Sheet1! B:B to E:E respectively. Then group so in each of Sheet2:5 B1 has =MID($A1,COLUMN()-1,1) and copy across and down as required. Sheet1 being reserved for your source data:

SU603915 example

Как бы то ни было, я обнаружил, что разбиение записи на подстроки, а не на «одну ячейку на символ» улучшает читаемость больше, чем достигается сейчас. Проголосовал, потому что отвечает на вопрос usr-local-ΕΨΗΕΛΩΝ 10 лет назад 1
TQ. Я не удивлен (неужели интересно, почему?) pnuts 10 лет назад 0
0
dav

The easiest way to do this is to simply use a preformatted Excel worksheet (template) and use the Data>From Text>Fixed Width option. This will allow you to bring any/all characters in their own cell, and you can start your range at any spreadsheet cell you like.

If this is going to be a repeated task, I'd use VBA to automate the process a bit, perhaps using a dialog box to ask for a file and a point to being the insertion, but doing all the rest automatically.

As for your Y, I don't think any of the Paste options, especially CTRLV will do what you want.

Я думаю, что вы частично ответили на мою часть Y: если VBA можно использовать, его * можно использовать *, чтобы разбить строку, вставленную в электронную таблицу, ИМХО. Но я не знаю VBA и поддерживает ли он перехват события вставки, но может быть хорошей отправной точкой. usr-local-ΕΨΗΕΛΩΝ 10 лет назад 0
Кроме того, я искал несколько формул, которые могли бы помочь мне разбить строку, вставленную в другую ячейку / лист usr-local-ΕΨΗΕΛΩΝ 10 лет назад 0
1) Я думаю, что мы говорим о двух сторонах одной и той же проблемы - я почти уверен, что VBA может использовать Paste как часть своего процесса, но это не будет Paste, это будет VBA, использующий Paste-minor, но я Подумайте, различие импоранта. 2) Могут быть некоторые формальные методы для адресации текста, вставленного в другом месте в электронной таблице. Не могли бы вы предоставить небольшую выборку ваших данных? Если вы открыты для решения VBA, вам следует добавить тег, возможно, вы добавите несколько дополнительных глаз к своему вопросу. dav 10 лет назад 0
Я бы использовал VBA только в крайнем случае. Тег добавлен usr-local-ΕΨΗΕΛΩΝ 10 лет назад 0

Похожие вопросы