【发布时间】:2016-07-12 19:50:21
【问题描述】:
为此,我一直在寻找超过 3 小时的公式或 vba 解决方案,但由于某种原因找不到任何东西。
我需要一些东西来查看一列,找到所有非空白单元格,然后将它们输出到其他地方。 这是数据的一个小示例表:
这是我想要输出的内容:
我发现了许多解决方案,其中大多数是 =value 和 =match 的组合,但我得到的结果要么为零,要么结果在列中包含不应包含空白的空白。
【问题讨论】:
为此,我一直在寻找超过 3 小时的公式或 vba 解决方案,但由于某种原因找不到任何东西。
我需要一些东西来查看一列,找到所有非空白单元格,然后将它们输出到其他地方。 这是数据的一个小示例表:
这是我想要输出的内容:
我发现了许多解决方案,其中大多数是 =value 和 =match 的组合,但我得到的结果要么为零,要么结果在列中包含不应包含空白的空白。
【问题讨论】:
试试这个宏
Sub findBlankCells()
Dim ws As Worksheet
Dim lastrow As Long
Dim i As Long
Dim j As Long
'change the sheet to whatever name sheet you have
ws = ThisWorkbook.Sheets("Sheet1")
'didn't chose A since it seems like you have more blank values there
lastrow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'j represents the row to copy to
j = 1
'loop through all the rows
For i = 1 To lastrow
'only copy to I and J column if both do not equal blank
If ws.Cells(i, "A") <> "" And ws.Cells(i, "B") <> "" Then
ws.Cells(j, "I") = ws.Cells(i, "A")
ws.Cells(j, "J") = ws.Cells(i, "B")
'increase j if the statement is true to go on to the next row to copy to
j = j + 1
End If
Next i
End Sub
【讨论】:
If ws.Cells(i, "A") <> "" And ws.Cells(i, "B") <> "" Then 中,我应该将其更改为:If ws.Cells(i, "A") <> "" And ws.Cells(i, "A") <> "" Then。在我的数据表上交叉检查了它,一切都检查出来了。再次感谢您的帮助!
If ws.Cells(i,"A") <> "" And ws.Cells(i,"A") <> "" Then 与 If ws.Cells(i,"A") <> "" Then 相同。它们是相同的参数,您不需要两次传递相同的参数。它应该适用于大数据,但您可以通过另一种方式处理此代码,根据您的图片并查看 A 列,您的代码也可能是 If ws.Cells(i,"A") = "yes" Then ,您的结果将更加具体,并且只有在一个单元格值为是,留下所有其他选项放入空白单元格,null,no N,等等
="yes" 选项,但在实时数据表中的“适合两者”列中,它实际上是一个主键列,因此每个值都不同。所以我觉得<>"" 更容易一些。