如何在 Excel 中将垂直数据列表转换为水平数据列表
How to convert vertical list of data into horizontal in Excel
我正在尝试将我父亲的旧诺基亚 phone 中的联系人导出到 iPhone 中。他们的旧软件 Nokia PC Suite 可以将这些联系人导出为 CSV 和格式如下的纯文本:
First Name: ...
Last Name: ...
Phone: ...
First Name: ...
Last Name: ...
Phone: ...
...
注意#1:有时没有名字,只有姓氏和phone数。它们以换行符隔开。
CSV 的问题是编码乱了,我找不到它是什么。我想知道如何从这个纯文本中将联系人导出到 CSV 甚至 vCard。
预期结果:
First Name | Last Name | Phone
FirstName1 | LastName1 | #####1
FirstName2 | LastName2 | #####2
FirstName3 | LastName3 | #####3
编辑:注意#2:有超过 600 个联系人。
编辑#2:
'
这是一个例子。左侧是源代码,右侧是我对 CSV 文件的需求。顺便说一句,不介意那些 "A"s,这只是我父亲使用的优先事项...
我想出了一个不用 VBA macro/UDF.
的方法
这是一个基本公式,每列略有变化。
这是我测试过的布局:
因此,如果您的数据从 A1 开始,并且每个 "block" 之间有一个中断,您可以在 C2
:
中执行此操作
=RIGHT(OFFSET($A1,(ROW()-2)*3,0),LEN(OFFSET($A1,(ROW()-2)*3,0))-SEARCH(":",OFFSET($A1,(ROW()-2)*3,0)))
并向下拖动。
然后,在 D2
中使用相同的公式,只是将出现 $A1
的地方 $A1
更改为 $A2
。
在E2
中,相同的公式,但每次出现$A1
并向下拖动时,将$A1
更改为$A3
。
编辑:或者,您可以将它放在 C2
中,然后上下拖动。这是一个不需要编辑每一列的公式:
=RIGHT(OFFSET(INDIRECT("$A"&ROW()-1+COLUMN()-3),(ROW()-2)*3,0),LEN(OFFSET(INDIRECT("$A"&ROW()-1+COLUMN()-3),(ROW()-2)*3,0))-SEARCH(":",OFFSET(INDIRECT("$A"&ROW()-1+COLUMN()-3),(ROW()-2)*3,0)))
我正在尝试将我父亲的旧诺基亚 phone 中的联系人导出到 iPhone 中。他们的旧软件 Nokia PC Suite 可以将这些联系人导出为 CSV 和格式如下的纯文本:
First Name: ...
Last Name: ...
Phone: ...
First Name: ...
Last Name: ...
Phone: ...
...
注意#1:有时没有名字,只有姓氏和phone数。它们以换行符隔开。
CSV 的问题是编码乱了,我找不到它是什么。我想知道如何从这个纯文本中将联系人导出到 CSV 甚至 vCard。
预期结果:
First Name | Last Name | Phone
FirstName1 | LastName1 | #####1
FirstName2 | LastName2 | #####2
FirstName3 | LastName3 | #####3
编辑:注意#2:有超过 600 个联系人。
编辑#2:
我想出了一个不用 VBA macro/UDF.
的方法这是一个基本公式,每列略有变化。
这是我测试过的布局:
因此,如果您的数据从 A1 开始,并且每个 "block" 之间有一个中断,您可以在 C2
:
=RIGHT(OFFSET($A1,(ROW()-2)*3,0),LEN(OFFSET($A1,(ROW()-2)*3,0))-SEARCH(":",OFFSET($A1,(ROW()-2)*3,0)))
并向下拖动。
然后,在 D2
中使用相同的公式,只是将出现 $A1
的地方 $A1
更改为 $A2
。
在E2
中,相同的公式,但每次出现$A1
并向下拖动时,将$A1
更改为$A3
。
编辑:或者,您可以将它放在 C2
中,然后上下拖动。这是一个不需要编辑每一列的公式:
=RIGHT(OFFSET(INDIRECT("$A"&ROW()-1+COLUMN()-3),(ROW()-2)*3,0),LEN(OFFSET(INDIRECT("$A"&ROW()-1+COLUMN()-3),(ROW()-2)*3,0))-SEARCH(":",OFFSET(INDIRECT("$A"&ROW()-1+COLUMN()-3),(ROW()-2)*3,0)))