我有来自制表符分隔的文本文件的输入
25/08/2013 B TRUE
25/08/2013 L FALSE
25/08/2013 D TRUE
26/08/2013 L FALSE
26/08/2013 D TRUE
27/08/2013 B TRUE
27/08/2013 L TRUE
27/08/2013 D TRUE
28/08/2013 B FALSE
28/08/2013 D FALSE
29/08/2013 B FALSE
第一列是日期。第二列是早餐、午餐或晚餐。如您所见,缺少一些数据:26 日吃早餐,28 日吃午餐。
现在我想将这些数据放入 Excel 电子表格中,如下所示:
缺少数据的地方会留下一个空白字段,其余部分将被转移。
我希望这可行且容易。谢谢!
答案1
将制表符分隔的数据导入 Excel 后,您可以使用公式来构建表格。
- 创建表格标题。然后,在日期下的第一个单元格中(
E3
在我的示例中),输入公式=MIN($澳元$3:$澳元$15)
A3:A15
原始数据中的日期列在 哪里。 - 在下面的单元格中(
E4
在我的示例中),输入公式=E3+1
并根据需要向下填充。 - 在早餐列的第一个单元格中输入公式
=IFERROR(CHOOSE(SUMPRODUCT(1*($E3=$A$3:$A$15),1*($B$3:$B$15=LEFT(F$2,1)),($C$3:$C$15)*2+1*NOT($C$3:$C$15)),FALSE,TRUE),"")
其中列标题在F2
,原始数据的 BLD 列在B3:B15
,原始数据的 TF 列在C3:C15
。 - 将此公式填入列下方。然后将公式填入所有列的右侧。请注意,该
LEFT(F$2,1)
位只是从列标题中取出第一个字母来检查 BLD 值。如果您的实际数据不遵循此模式,您可以将公式的这一部分替换为要匹配的值(括在引号中)(例如,"B"
改为)。
答案2
我假设您已将输入数据导入到 R 至 T 列:
喜欢艾克赛尔,我将日期转换为 m/d/yyyy 格式,以便它们可以在我的系统上使用。现在,要将您想要的结果放入 A 至 D 列:
=R2&S2
通过输入单元格(如果没有标题行,Q2
则输入=R1&S1
单元格)并向下拖动/填充来创建辅助列 Q :Q1
在 A 列中填写您想要的日期。有很多方法可以做到这一点:
为了获得某个范围的完整覆盖,
- 将单元格设置
A2
为=MIN(R2:R12)
(或=MIN(R1:R12)
,如果 R 列中没有标题行),或者只需输入所需的开始日期,然后 - 将单元格设置
A3
为=A2+1
并向下拖动/填充单元格A3
。或者只是A2
向下拖动/填充单元格。或者A2
向下拖动/填充单元格使用鼠标右键并在“填充日子”和“填充工作日”之间进行选择。
或者- 将单元格设置
使用数据中存在的日期,不要使用其他日期。
- 确保 R 列有标题,然后
- 选择列(标题和所有数据),然后
- 转到“数据”选项卡、“排序和过滤”面板,然后单击“高级”,然后
- 选择“复制到另一个位置”,输入
A:A
“复制到”,选择“仅唯一记录”(然后单击“确定”)。
输入
=IFERROR(VLOOKUP($A2&LEFT(B$1,1), $Q$1:$T$12, 4, FALSE), "")
单元格B2
,然后像 Excellll 的答案一样向下和向右拖动。他关于的评论LEFT(F$2,1)
同样适用于我的LEFT(B$1,1)
。
[正如您所发现的,Excel 的某些本地化版本要求函数参数用分号分隔。]
如果您想使此转换永久生效并删除原始数据,只需复制然后粘贴值即可。
我认为这个答案比之前提出的其他答案更简单。另外,我的答案更灵活,因为(我相信)如果在最右边的列中输入了除TRUE
或之外的任何数据,其他答案就会失败FALSE
,而我的答案可以处理诸如eggs
、sandwich
和salad
、支付价格、时间、位置等内容。
答案3
您可以使用辅助列、数据透视表和数据透视表中的自定义格式快速完成此操作。见下文。
将数据导入 Excel 并使用“文本到列”菜单将其拆分,如 A:C 列所示。
辅助列 D 将 C 列中的值分配为 1 表示 TRUE,0 表示 FALSE。
使用 VALUES 部分中的辅助列构建数据透视表,如下所示。最初,VALUES 部分将显示 1 和 0。
然后在“值字段设置”中,您可以使用自定义数字格式“True”;“True”;“False”将 1 和 0 转换回 TRUE 和 FALSE。