Разделите один столбец Excel с данными, разделенными запятой, на несколько столбцов.
Я использую программу FilterPro для разработки электронного фильтра. Фильтр имеет некоторые связанные данные, которые вы можете экспортировать в Excel. В FilterPro данные выглядят следующим образом: вместо десятичной точки используется десятичная запятая .
FilterPro имеет функцию экспорта в Excel. Однако при экспорте в Excel все данные помещаются в один столбец, где разные параметры разделяются запятой. Таким образом, в числах используется десятичная запятая, и они также разделяются запятой...
Я хочу, чтобы каждый параметр (частота (Гц), частота (рад/сек)...) имел свой собственный столбец данных. Однако, поскольку в числах используется десятичная запятая, я не могу использовать для этого преобразование текста в столбцы Excel, потому что числа становятся неправильными.
2 ответа
Если вы хотите, чтобы он появился, так сказать, в Excel как «все готово», вам нужно использовать VBA или промежуточную программу следующим образом:Hannu
предлагает или другими способами, такими как подход RegEx, скажем, в NotePad++.
У меня нет квалификации, чтобы сильно помочь в этом вопросе, и не думаю, что вам нужно такое исправление, поэтому я перейду к способам сделать это «в Excel».
Таким образом, вы импортируете данные, позволяя им помещаться в столбцы, как это делает Excel при открытии файла .CSV, или, альтернативно, получаете их, как показано на втором рисунке. (Я считаю, что переименование файла с окончанием .TXT позволит обойти автоматический подход, который получает файл .CSV. Но, тем не менее.) Предполагая, что вы получаете несколько столбцов, в каждой ячейке которых есть половина числа, существует несколько подходов.
Один из способов сделать это — использовать такую формулу:
=VALUE( A1 & "." & B1 )
в ячейку где-нибудь удобно и копируйте ее по мере необходимости, а также в каждый столбец справа от нее, пока не учтете все столбцы в исходных данных. Итак, результат формулы затем пустой, затем результат формулы, затем... и т. д.
(Можно составить формулу для каждого столбца, используя «A1:A12» и «B1:B12», и исключить необходимость «копировать».)
Затем вы скроете пустые столбцы, скопируете выходные данные и вставите их туда, где вы хотите, чтобы данные были.
Но поскольку у вас не так много столбцов, почему бы не автоматизировать это еще больше? Используя различные подходы, можно сделать диапазон, используемый для вывода, непрерывным, поэтомуSPILL
было бы легко использовать, но также можно было бы напрямую копировать и вставлять. (это то, что я показываю, но это совсем недавно.INDEX
используя параметр «Области» (четвертый параметр), где это константа массива, например «{1,2,3,4}», или любой подход, который создает требуемую константу массива, напримерSEQUENCE
, илиCHOOSE
использование константы массива почти таким же образом также приходит на ум. Наверное, и другие тоже.TEXTJOIN
наверняка можно было бы подогнать по размеру, и поэтому, вероятно, можно было быXLOOKUP
. Так что есть и другие варианты.)
Кроме того, возможно, у вас есть или будут пользователи, которые используют разные системные разделители для своих номеров. Они могут захотеть, чтобы ваша формула выполняла преобразование для получения числового значения, несмотря ни на что, которое затем будут отображать их системы. Если вы настроите формулу для своих собственных разделителей, она может не работать для них.
Это можно решить, заменив на . Он делает то же самое, что и «текст в числовое значение», но вы можете убедиться, что данные преобразуются в число независимо от системных разделителей пользователя, указав десятичный разделитель, который Excel будет использовать при попытке это сделать. СVALUE
, если вы объедините строку, используя запятую, где происходит десятичное разделение, это отлично сработает для вас. Если я открою электронную таблицу и испытаю удачу, Excel не будет интерпретировать строку как число, потому что он не распознает ее как единицу, или, что еще хуже (мой случай), он увидит этот разделитель как разделитель группировки и выдаст мне целое число, например 561876, а не 561,876. Но если вы передадите строку и сообщите ей, что «,» в строке является десятичным разделителем, он будет знать это и на моей машине. Таким образом, это даст нам обоим то же число, которое, как сказали нашим операционным системам, мы предпочитаем.
С иNUMBERVALUE
, простые первые три (шесть, но по два для каждого выходного числа) экспортируемых числа будут использовать следующую формулу:
=HSTACK( NUMBERVALUE(A1:A12&"."&B1:B12,"."), NUMBERVALUE(C1:C12&"."&D1:D12,"."), NUMBERVALUE(E1:E12&"."&F1:F12,".") )
и все, что вам нужно сделать, это продолжать добавлять подэлементы (NUMBERVALUE(E1:E12&"."&F1:F12,".")
), меняя буквы столбцов, пока не будут получены все столбцы из исходных данных. Выглядит как семь подэлементов, поэтому проще просто вставить один семь раз и отредактировать буквы, чем использовать методы построения строк, чтобы создать строку и вставить ее в формулу. Кроме того, это достаточно легко сделать вручную, поэтому вам не нужно придумывать способ, используяINDIRECT
и/илиADDRESS
сделать это.
Итак, одна формула, не нужно копировать ее, вставлять снова и снова, добавлять к ней или сокращать каждый новый набор данных.
Поскольку это работает очень легко и подходит для любой версии Excel (при использовании старых функций для заменыHSTACK
часть), я не буду переходить ни к каким другим.
csv-файлы имеют формат «ASCII», например, вы можетеcat file
(type file
) и просмотрите содержимое.
Теперь вам нужны все остальные
,
преобразован в
.
Сохраните это, напримерcvt.py
...
импортировать систему точка=1 c=sys.stdin.read(1) в то время как len(c)>0: если c!=',': печать(с, конец="") иначе: # c — это "," если нет (точка): печать('.',конец='') еще: печать (с, конец = '') точка=1 точка c=sys.stdin.read(1)
тогда делайpython3 cvt.py <file.csv >newfile.csv
для вашего экспортированного файла.
Затем попробуйте импортироватьnewfile.csv
в Excel.
И да, вам нужно установить Python3.
Извините, я не понял, что вы используете Windows до конца, :-7
Наркоман Linux