答案1
csv 文件是“ASCII”,例如您可以cat file
(type file
)并查看其内容。
现在你需要的是所有其他,
转换为.
将其保存为例如cvt.py
...
导入系统 点=1 c=sys.stdin.读取(1) 当 len(c) > 0 时: 如果 c!=',': 打印(c,end =“”) else: # c 是“,” 如果不是(点): 打印('.',结束='') 别的: 打印(c,结束='') 点=1-点 c=sys.stdin.读取(1)
然后python3 cvt.py <file.csv >newfile.csv
对导出的文件执行操作。
然后尝试导入newfile.csv
到 Excel。
是的,你需要安装 Python3,
抱歉,直到最后我才意识到你使用的是 Windows,:-7
Linux 爱好者
答案2
如果您希望它在 Excel 中实现,也就是说“全部完成”,您需要使用 VBA 或中间程序,以Hannu
建议的方式或其他方式,例如 NotePad++ 中的 RegEx 方法。
我没有资格在那里提供太多帮助,并且认为您似乎不想要那种修复,因此我将转向“在 Excel 中”的方式来执行此操作。
因此,您可以导入,让数据像 Excel 打开 .CSV 文件时那样进入列中,或者,按照第二张图片中显示的方式输入数据。(我相信用 .TXT 结尾重命名文件可以实现这一点,因为它可以绕过 .CSV 文件的自动方法。但是无论如何。)假设您获得多个列,每个单元格都有半个数字,则有多种方法。
其中一种方法是使用如下公式:
=VALUE( A1 & "." & B1 )
在方便的单元格中,根据需要将其向下复制,并复制到其右侧的所有其他列,直到您考虑到源数据中的所有列。因此,公式结果为空,然后公式结果为...等等。
(可以SPILL
使用“A1:A12”和“B1:B12”来制作每列的公式,从而无需“向下复制”。)
然后隐藏空列,复制输出,并将其粘贴到您希望数据所在的位置。
但是既然您没有很多列,为什么不进一步自动化呢?使用各种方法,可以使用于输出的范围连续,这样SPILL
就很容易使用,而且也可以直接复制和粘贴。 (HSTACK
是我展示的,但非常新。INDEX
使用其“区域”参数(第 4 个参数),它是一个数组常量,如“{1,2,3,4}”或任何产生所需数组常量的方法,如SEQUENCE
,或CHOOSE
以同样的方式使用数组常量也会浮现在脑海中。可能还有其他的。 TEXTJOIN
肯定可以适应,所以可能可以XLOOKUP
。所以除了还有其他选择HSTACK
。)
此外,也许您有或将有用户使用不同的系统分隔符来表示他们的数字。他们可能希望您的公式进行转换以产生一个数字值,无论如何,他们的系统都会为他们显示该数字值。如果您为您自己的所需分隔符设置公式,它可能对他们不起作用。
可以通过用 替换来解决这个问题。它VALUE
与执行NUMBERVALUE
相同的“文本到数字值”操作,VALUE
但您可以通过指定 Excel 在尝试执行此操作时将使用的小数分隔符来确保数据转换为数字,而不管用户的系统分隔符是什么。使用VALUE
,如果您在小数分隔符处使用逗号连接字符串,它会很好地为您服务。如果我打开电子表格并碰碰运气,Excel 不会将字符串解释为数字,因为它无法将其识别为数字,或者更糟(我的情况),它会将该分隔符视为分组分隔符并给我一个整数,如 561,876 而不是 561.876。但是,如果您将字符串提供给NUMBERVALUE
并告诉它字符串中的“,”是小数分隔符,它也会在我的计算机上知道这一点。因此,它将为我们两个显示相同的数字,因为我们的操作系统被告知我们更喜欢这个数字。
使用HSTACK
和NUMBERVALUE
,简单的前三个(六个,但每个输出数字两个)导出的数字将使用如下公式:
=HSTACK( NUMBERVALUE(A1:A12&"."&B1:B12,"."), NUMBERVALUE(C1:C12&"."&D1:D12,"."), NUMBERVALUE(E1:E12&"."&F1:F12,".") )
您需要做的就是继续添加子元素(NUMBERVALUE(E1:E12&"."&F1:F12,".")
)并更改列字母,直到获得源数据中的所有列。看起来像七个子元素,因此只需粘贴七次并编辑字母,比使用字符串构建技术创建字符串并将其粘贴到公式中更省事。此外,手动操作非常简单,您无需想出使用INDIRECT
and/or的方法ADDRESS
。
因此,只需一个公式,无需复制、粘贴,也无需在每个新数据集上添加或删减。
由于它非常容易操作,并且适合任何版本的 Excel(当使用旧函数替换部分时HSTACK
),因此我不会继续介绍其他任何函数。