创建一个不包含0值的两列列表
问题描述:
这看起来非常简单,但我似乎无法摆脱困境。所以我有两列。 A有名字,B有值。所有我想要做的就是复制这个列表(成列d和E)刚刚在B列不包括0值(我把我所期待下面的例子)创建一个不包含0值的两列列表
我不是擅长excel,所以这是一个挑战。我试图让它与公式一起工作,因为我需要它在列B中的值更改时自动更新。 任何帮助将不胜感激。
答
我相信我有一个应该工作的公式版本。拉第一个非零行到D2:E2(手动或使用简单的指数公式),然后使用D3和E3如下:
D3=IFERROR(INDEX(OFFSET($A$1,MATCH(D2&E2,$A$1:$A$99&$B$1:$B$99,0),0,99),MATCH(TRUE,(OFFSET($B$1,MATCH(D2&E2,$A$1:$A$99&$B$1:$B$99,0),0,99)<>0),0)),"")
E3=IFERROR(INDEX(OFFSET($B$1,MATCH(D2&E2,$A$1:$A$99&$B$1:$B$99,0),0,99),MATCH(TRUE,(OFFSET($B$1,MATCH(D2&E2,$A$1:$A$99&$B$1:$B$99,0),0,99)<>0),0)),"")
然后自动填充到列表的底部。
请注意,这些是数组公式,因此它们必须使用Ctrl + Shift + Enter输入。此外,如果您的列表长度超过99,则将公式中的所有99都更新为至少与列表长度一样大的数字。
工作方式是使用OFFSET
公式开始搜索刚刚在前面列出的结果下面的非零值。
+0
非常感谢你!这正是我正在寻找的:D –
答
你可以简单地使用,如果公式来检查这样的价值...
'Column D formula:
=IF(E1="","",A1)
'Column E Formula:
=IF(B1=0,"",B1)
虽然我怀疑这是你在找什么,因为它会见好就收在列d和e如果空白单元格B列中的值为0.
我会推荐使用一个可以更加动态化的宏。
Sub Check_Values()
Application.ScreenUpdating = False
Range("D:E").Select
Selection.ClearContents
Dim name As Integer, val As Integer
Dim name1 As Integer, val1 As Integer
Dim Emptyrw As Long, Emptyrw1 As Long, Emptyrw2 As Long
Dim i As Integer
name = 1
val = 1
name1 = 1
val1 = 1
Emptyrw = WorksheetFunction.CountA(Range("B:B")) + 1
Emptyrw1 = WorksheetFunction.CountA(Range("D:D")) + 1
Emptyrw2 = WorksheetFunction.CountA(Range("E:E")) + 1
i = 1
Do While val < Emptyrw
If Cells(val, 2) <> 0 Then
Range(Cells(name, 1), Cells(val, 2)).Select
Selection.Copy
Range(Cells(Emptyrw1, 4), Cells(Emptyrw2, 5)).Select
Selection.PasteSpecial
Application.CutCopyMode = False
End If
name = name + 1
val = val + 1
name1 = name1 + 1
val1 = val1 + 1
Emptyrw1 = Emptyrw1 + 1
Emptyrw2 = Emptyrw2 + 1
Loop
Do While i < Emptyrw1
If Cells(i, 4) = "" Then
Range(Cells(i, 4), Cells(i, 5)).Select
Selection.Delete Shift:=xlUp
End If
i = i + 1
Loop
End Sub
您可以将此代码直接复制到您的VBA,并分配一个命令按钮,并应为你工作。
祝你好运!
岂不的[高级筛选](https://support.office.com/en-us/article/Video-Advanced-filter-details-BBD0CB0A-8F90-43DF-BF77-6AD3774DC420 )适合这个吗? – Jeeped
您可以过滤原始范围,然后仅将其用于复制可见单元格 https://support.office.com/zh-cn/article/Copy-and-paste-visible-cells-only-6F655372-4EA0- 4221-BF68-272422419B59 – dgorti
我试过@Jeeped,但数据不会自动更新,你需要手动刷新过滤器。 –