早教吧 育儿知识 作业答案 考试题库 百科 知识分享

excelABC三列,C列如果等于0,则返回A列值,不等于0,则忽略不显示例:ABC我时0122AA时0我时1我时4QW时0C列如果等于0,则返回A列的值,最后显示结果为:D我AAQW注意:C列不等于0时,不显示

题目详情
excel A B C 三列,C列如果等于0,则返回A列值,不等于0,则忽略不显示
例:
A B C
我 时 0
1 2 2
AA 时 0
我 时 1
我 时 4
QW 时 0
C列如果等于0,则返回A列的值,最后显示结果为:
D

AA
QW
注意:C列不等于0时,不显示出来!
最后显示结果为:
D

AA
QW
注意:每行之间没有空的!
也就是说:再sheet1中如下显示
A B C
我 时 0
1 2 2
AA 时 0
我 时 1
我 时 4
QW 时 0
在sheet2中如下显示:
A
1 我
2 AA
3 QW
▼优质解答
答案和解析
自动宏的代码我写好了,请放在工作表的代码区里.虽然有点长,但分了三个过程,相对简单易懂.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Long,iClo As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ActiveSheet.DisplayPageBreaks = False
iRow = Target.Row()
iClo = Target.Column()
On Error GoTo ErrorHandler
Application.EnableEvents = False
If iClo = 1 Or iClo = 3 Then
Call NeedDeal
End If
Target.Select
ErrorHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Private Sub NeedDeal()
Dim i As Long,targetCellRow As Long
Columns("D:D").ClearContents
targetCellRow = 1
For i = 1 To LocalTheLastLine()
If Cells(i,3).Value = "0" Then
Cells(targetCellRow,4).Value = Cells(i,1).Value
targetCellRow = targetCellRow + 1
End If
Next i
End Sub
Private Function LocalTheLastLine() As Long
Dim i As Long
i = Cells.SpecialCells(xlLastCell).Row()
While WorksheetFunction.CountA(Rows(i)) = 0 And i > 1
i = i - 1
Wend
LocalTheLastLine = i
End Function
有疑问,请Hi我或给我发百度消息
GoodLuck!