在电子表格(Excel,Google Docs,OpenOffice)中,如何将数据从行转换为列,但只转换为非空单元格?


2

我使用上面列出的所有三个电子表格程序,我相信我的问题可以回答相同或类似的三个问题。

在我的工作表上,我有一个顶行的列标题。第二行是对应于列标题的数据,但是一些单元格可以是空的,也可以不是空的。我想在第二行中转置数据,以便新列完全忽略空单元格。

例如,如果我在连续单元格中有一个值为“A”,NULL,“C”,“D”的行,我想要转置使得新列显示为“A”,“C”,“D”与NULL没有空单元格。

希望我的描述是描述性的。谢谢。

Answers:


2

NoCatharsis,

我给你的简单答案是Excel特定的(Google Docs没有类似的过滤器和Open Office的Calc复制过滤的单元格):

1)使用“AutoFilter”(数据>过滤器>自动过滤)并过滤非空白。

2)复制剩余的细胞

3)选择性粘贴(编辑>选择性粘贴),然后从选项中选择“移调”

加多宝


1

给定一个以行开头并以列结尾的具体示例,我会以相反的方式执行相同的步骤,尽管我不喜欢以过滤表结束的想法。如果您可以对数据进行排序(即顺序无关紧要),那么可以将所有空白分配到一个可以删除行的位置。

无论如何,我建议使用高级过滤器更好的全方位解决方案: 选择您的原始数据行,复制,在新工作表上的某处选择一个单元格,其上方至少有一个空单元格,粘贴>粘贴特殊,勾选“转置”,好的

现在你有一个有差距的专栏。

在它上面的单元格中,给列添加标签,比如“数据”。使其变为粗体(Ctrl-B),以便Excel发现这是一个标题,即使它是文本,就像列的其余部分一样。

在某个地方的另一个单元格中(例如右边的两个单元格),键入相同的标签,并在星号下面的单元格中输入(* - 后面的通配符)。 选择包含所有间隙和标题的列

转到数据功能区>排序和筛选组,然后单击“高级筛选”。

勾选“复制到其他位置”

检查“列表范围”是否包含您选择的数据列。

单击“条件范围”旁边的“重新编辑”按钮,然后使用标题和通配符选择之前创建的两个单元格

对于“复制到”范围,选择此工作表上的任何单元格,例如右侧的几列。

单击确定。

任务完成。您现在有一组新的连续数据,您可以删除其他列。

请注意,您不能使用高级过滤器将新列表复制到另一个工作表,除非您首先从该工作表开始,然后返回以选择数据和条件。对于快速而肮脏的方法,这要简单得多。


1

如果没有宏编程,我无法想到这样做的方法,所以我不确定Google Docs或OpenOffice,但这是在Excel中实现它的一种方法。

这个宏假定:

  1. 您的数据位于名为“Sheet1”的单独工作表上
  2. 您的目的地是名为“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


0

在一组新的单元格和列中使用公式 =A270 | =A272 | =A274, 然后填写。

它会自动重新排列该列,例如A,然后将值复制并粘贴到新工作表中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.