我使用上面列出的所有三个电子表格程序,并且我相信我的问题可以对于这三个程序得到相同或相似的答案。
在我的工作表上,顶行全是列标题。第二行是与列标题对应的数据,但有些单元格可能为空,也可能不为空。我想转置第二行的数据,以便新列完全忽略空单元格。
例如,如果我有一行,其连续单元格中的值分别为“A”、“NULL”、“C”、“D”,则我想要转置,使得新列显示“A”、“C”、“D”,并且没有用于 NULL 的空单元格。
希望我的描述足够详细。谢谢。
答案1
没有宣泄,
我为您提供的简单答案是特定于 Excel 的(Google Docs 没有类似的过滤器,而 Open Office 的 Calc 会复制过滤后的单元格):
1)使用“自动过滤”(数据>过滤>自动过滤)并过滤非空白。
2)复制剩余单元格
3)选择性粘贴(编辑>选择性粘贴)并从选项中选择“转置”
加多宝
答案2
鉴于具体示例以一行开始并以一列结束,我会反过来执行相同的步骤,尽管我不喜欢以过滤后的工作表结束的想法。如果您可以对数据进行排序(即顺序无关紧要),那么所有空白都会集中到一个地方,您可以在此删除行。
无论如何,我建议使用高级过滤器实现更好的全面解决方案:选择原始数据行,复制,在新工作表的某个位置选择一个单元格,该单元格上方至少有一个空单元格,粘贴 > 选择性粘贴,勾选“转置”,确定
现在您有一个有间隙的列。
在上面单元格中,为该列添加标签,例如“数据”。将其设为粗体 (Ctrl-B),这样 Excel 便会发现这是一个标题,尽管它与该列的其余部分一样都是文本。
在另一个单元格中(例如右侧的两个单元格),输入相同的标签,并在星号下方的单元格中输入(* - 稍后使用的通配符)。选择您的列及其所有间隙和标题
转到数据功能区>排序和过滤组,然后单击高级过滤器。
勾选“复制到其他位置”
检查“列表范围”是否有您选择的数据列。
单击“条件区域”旁边的重新编辑按钮,然后选择之前使用标题和通配符创建的两个单元格
对于“复制到”范围,请选择此表上的任意单元格,例如右侧的另外几列。
单击“确定”。
任务完成。现在您有了一组新的连续数据,您可以删除其他列。
请注意,您不能使用高级过滤器将新列表复制到另一张工作表,除非您首先从该工作表开始,然后返回选择数据和条件。对于快速而粗略的方法,这要简单得多。
答案3
我想不出不使用宏编程来做到这一点的方法,所以我不确定 Google Docs 或 OpenOffice,但这里有一种在 Excel 中做到这一点的方法。
此宏假设:
- 您的数据位于名为“Sheet1”的单独工作表中
- 您的目的地是名为“Sheet2”的空白表
要使用宏,请选择 Sheet1 上要转置的行,然后执行该宏并突出显示这些行。结果应复制到 Sheet2。
Sub CopyNonNulls()
Dim DestinationCellAddress As String
DestinationCellAddress = "A1"
Dim CurrentCellAddress As String
CurrentCellAddress = DestinationCellAddress
For Each rw In Selection.Rows
For Each c In rw.Cells
If c.Value <> "" Then
Worksheets("Sheet2").Range(CurrentCellAddress).Value = c.Value
CurrentCellAddress = Worksheets("Sheet2").Range(CurrentCellAddress).Offset(1, 0).Address
End If
Next
CurrentCellAddress = Worksheets("Sheet2").Range(DestinationCellAddress).Offset(0, 1).Address
Next
Worksheets("Sheet2").Select
End Sub
答案4
在新的一组单元格和列中使用公式,例如=A270 | =A272 | =A274
,然后向下填充。
它会自动重新排列该列,例如 A,然后将值复制并粘贴到新工作表中。