在excel中循环以遍历一列中的值

在excel中循环以遍历一列中的值,excel,Excel,我有以下数据 ID Balance Balance_Sum Max_Balance 1 1000 2300 1500 1 -200 2300 1500 1 1500 2300 1500 ID余额余额总和最大余额 1 1000 2300 1500 1 -200

我有以下数据

ID Balance Balance_Sum Max_Balance 1 1000 2300 1500 1 -200 2300 1500 1 1500 2300 1500 ID余额余额总和最大余额 1 1000 2300 1500 1 -200 2300 1500 1 1500 2300 1500 我的下一列将计算一些值if(Max\u Balance0,则我必须选择下一个最大值,即1000

如何使用公式实现这一点。上面显示的计算是针对1个ID的。我可能有数千个这样的ID组。
我不能使用VBA,因为我的文件太大,加载需要时间。

我想你需要的是一个公式的一部分,该公式计算从这里到列表末尾的
=MAX(…)
。这可以使用=OFFSET(…)函数完成。让我们列出从A1开始的值,以及从B1开始的相对最大值

B1: =MAX(OFFSET(A1;0;0;COUNT(A1:A$1000)))
因此,
COUNT()
的最后一项非常高,它确保包含所有行。只有当中间没有空行时,这才有效

您可以向下和横向复制此公式,第1000行是此处唯一的不变项。

Sub abc()
Sub abc()
j = 2
ActiveSheet.Range("a1").Select
ActiveSheet.Range("a65536").Select
lastrow = Selection.End(xlUp).Row

ActiveSheet.Range("a1").Select
For i = 2 To lastrow
Range("a" & i).Select
If Range("a" & i).Value = "East" Or Range("a" & i).Value = "west" Or Range("a" &  i).Value = "north" Or _
Range("a" & i).Value = "south" Then
GoTo cont
Else

Rows(i).Select
Application.CutCopyMode = False
Selection.Cut
Sheets("Sheet2").Select
Range("a" & j).Select
ActiveSheet.Paste
j = j + 1
Sheets("sheet1").Select
   Selection.Delete Shift:=xlUp
End If
cont:
Next i


'/////// column b ///////////

ActiveSheet.Range("a1").Select
For i = 2 To lastrow
Range("b" & i).Select
If Range("b" & i).Value >= "01-01-2013" And Range("b" & i).Value <= "30-06-2013" Then
GoTo cont2
Else

Rows(i).Select
Application.CutCopyMode = False
Selection.Cut
Sheets("Sheet2").Select
Range("a" & j).Select
ActiveSheet.Paste
j = j + 1
Sheets("sheet1").Select
Selection.Delete Shift:=xlUp
End If
cont2:
Next i


End Sub
j=2 ActiveSheet.Range(“a1”)。选择 ActiveSheet.Range(“a65536”)。选择 lastrow=Selection.End(xlUp).Row ActiveSheet.Range(“a1”)。选择 对于i=2到最后一行 范围(“a”和i)。选择 如果范围(“a”&i).Value=“东”或范围(“a”&i).Value=“西”或范围(“a”&i”).Value=“北”或_ Range(“a”和i).Value=“south”然后 转到cont 其他的 行(i)。选择 Application.CutCopyMode=False 选择,剪 图纸(“图纸2”)。选择 范围(“a”和“j”)。选择 活动表。粘贴 j=j+1 图纸(“图纸1”)。选择 选择。删除移位:=xlUp 如果结束 续: 接下来我 “//b列/////////// ActiveSheet.Range(“a1”)。选择 对于i=2到最后一行 范围(“b”和i)。选择 如果范围(“b”&i).值>=“01-01-2013”和范围(“b”&i).值<代码>子abc() j=2 图纸(“图纸1”)。选择 ActiveSheet.Range(“a1”)。选择 ActiveSheet.Range(“a65536”)。选择 lastrow=Selection.End(xlUp).Row '///a列 ActiveSheet.Range(“a3:a”&lastrow)。选择 自动筛选 ActiveSheet.Range($A$4:$A$”&lastrow)。自动筛选字段:=1,标准1:=“=” Application.CutCopyMode=False Selection.EntireRow.Select '范围(选择,选择。结束(xlToRight))。选择 rownum=Selection.Row 如果rownum=3,则 自动筛选 后藤标签1 如果结束 选择,复制 图纸(“图纸2”)。选择 'lrow=ActiveSheet.Range(“A65536”).End(xlUp).Row lrow=Cells.Find(what:=“*”,after:=[a1],searchorder:=xlByRows_ 搜索方向:=xlPrevious).行 范围(“a”&lrow+1)。选择 活动表。粘贴 图纸(“图纸1”)。选择 Selection.SpecialCells(xlCellTypeVisible)。选择 Application.CutCopyMode=False Selection.EntireRow.Delete 自动筛选 “b栏/////////// 标签1: ActiveSheet.Range(“b65536”)。选择 lastrow=Selection.End(xlUp).Row ActiveSheet.Range(“b4:b”和lastrow)。选择 自动筛选 ActiveSheet.Range($b$1:$b$”&lastrow)。自动筛选字段:=1,标准1:=“=” Application.CutCopyMode=False 范围(选择,选择。结束(xlToLeft))。选择 Selection.EntireRow.Select '范围(选择,选择。结束(xlToRight))。选择 rownum=Selection.Row 如果rownum=3,则 自动筛选 GoTo label2 如果结束 选择,复制 图纸(“图纸2”)。选择 'lrow=ActiveSheet.Range(“A65536”).End(xlUp).Row lrow=Cells.Find(what:=“*”,after:=[a1],searchorder:=xlByRows_ 搜索方向:=xlPrevious).行 范围(“a”&lrow+1)。选择 活动表。粘贴 图纸(“图纸1”)。选择 Selection.SpecialCells(xlCellTypeVisible)。选择 Application.CutCopyMode=False Selection.EntireRow.Delete 'Selection.AutoFilter 'c栏//////////// 标签2: ActiveSheet.Range(“c65536”)。选择 lastrow=Selection.End(xlUp).Row ActiveSheet.Range(“c4:c”和lastrow)。选择 自动筛选 ActiveSheet.Range($c$1:$c$”&lastrow)。自动筛选字段:=1,标准1:=“SG Plus”_ 运算符:=xlOr,准则2:=“=选择” Application.CutCopyMode=False '范围(选择,选择。结束(xlToRight))。选择 '选择。复制 '工作表(“工作表2”)。选择 'lrow=activehseet.Range(“A65536”).End(xlUp).Row 'ActiveSheet.Range(“a”&lrow)。选择 '活动表。粘贴 '工作表(“工作表1”)。选择 rownum=Selection.Row 如果rownum=3,则 自动筛选 后藤标签3 如果结束 范围(“a4:a”和最后一行)。选择 范围(选择,选择。结束(xlToRight))。选择 Selection.EntireRow.Select Selection.SpecialCells(xlCellTypeVisible)。选择 Application.CutCopyMode=False Selection.EntireRow.Delete 'Selection.AutoFilter '又是c列///////////// 标签3: ActiveSheet.Range(“c65536”)。选择 lastrow=Selection.End(xlUp).Row ActiveSheet.Range(“c4:c”和lastrow)。选择 自动筛选 ActiveSheet.Range($c$1:$c$”&lastrow)。自动筛选字段:=1,标准1:=“=” Application.CutCopyMode=False rownum=Selection.Row 如果rownum=3,则 自动筛选 后藤标签4 如果结束 范围(选择,选择。结束(xlToRight))。选择 范围(“a4:a”和最后一行)。选择 范围(选择,选择。结束(xlToRight))。选择 Selection.EntireRow.Copy 图纸(“图纸2”)。选择 'lrow=ActiveSheet.Range(“A65536”).End(xlUp).Row lrow=Cells.Find(what:=“*”,after:=[a1],searchorder:=xlByRows_ 搜索方向:=xlPrevious).行 范围(“a”&lrow+1)。选择 活动表。粘贴 图纸(“图纸1”)。选择 Selection.SpecialCells(xlCellTypeVisible)。选择 Application.CutCopyMode=False Selection.EntireRow.Delete 'Selection.AutoFilter “//超过///////////////////////////// 标签4: ActiveSheet.Range(“a1”)。选择 对于i=4到最后一行 范围(“a”和i)。选择 如果范围(“a”&i).Value=“中美”或范围(“a”&i).Value=“东北”
Sub abc()

j = 2
Sheets("sheet1").Select

ActiveSheet.Range("a1").Select
ActiveSheet.Range("a65536").Select
lastrow = Selection.End(xlUp).Row

'/// column a
ActiveSheet.Range("a3:a" & lastrow).Select

    Selection.AutoFilter
    ActiveSheet.Range("$A$4:$A$" & lastrow).AutoFilter Field:=1, Criteria1:="="

    Application.CutCopyMode = False

    Selection.EntireRow.Select

'    Range(Selection, Selection.End(xlToRight)).Select
    rownum = Selection.Row

    If rownum = 3 Then
    Selection.AutoFilter
    GoTo label1
    End If

    Selection.Copy
    Sheets("Sheet2").Select
    'lrow = ActiveSheet.Range("A65536").End(xlUp).Row

    lrow = Cells.Find(what:="*", after:=[a1], searchorder:=xlByRows, _
    searchdirection:=xlPrevious).Row

    ActiveSheet.Range("a" & lrow + 1).Select
    ActiveSheet.Paste
    Sheets("Sheet1").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Application.CutCopyMode = False
    Selection.EntireRow.Delete
 Selection.AutoFilter

'column b///////////
label1:
ActiveSheet.Range("b65536").Select
lastrow = Selection.End(xlUp).Row
ActiveSheet.Range("b4:b" & lastrow).Select

    Selection.AutoFilter
    ActiveSheet.Range("$b$1:$b$" & lastrow).AutoFilter Field:=1, Criteria1:="="

    Application.CutCopyMode = False
    Range(Selection, Selection.End(xlToLeft)).Select

    Selection.EntireRow.Select

    'Range(Selection, Selection.End(xlToRight)).Select

    rownum = Selection.Row
    If rownum = 3 Then
    Selection.AutoFilter
    GoTo label2
    End If

    Selection.Copy
    Sheets("Sheet2").Select
    'lrow = ActiveSheet.Range("A65536").End(xlUp).Row

    lrow = Cells.Find(what:="*", after:=[a1], searchorder:=xlByRows, _
    searchdirection:=xlPrevious).Row

    ActiveSheet.Range("a" & lrow + 1).Select
    ActiveSheet.Paste
    Sheets("Sheet1").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Application.CutCopyMode = False
    Selection.EntireRow.Delete
    ' Selection.AutoFilter

    'column c////////////
label2:

    ActiveSheet.Range("c65536").Select
lastrow = Selection.End(xlUp).Row
 ActiveSheet.Range("c4:c" & lastrow).Select

    Selection.AutoFilter
    ActiveSheet.Range("$c$1:$c$" & lastrow).AutoFilter Field:=1, Criteria1:="SG Plus", _
    Operator:=xlOr, Criteria2:="=Select"
    Application.CutCopyMode = False

    'Range(Selection, Selection.End(xlToRight)).Select
'    Selection.Copy
'    Sheets("Sheet2").Select
'    lrow = activehseet.Range("A65536").End(xlUp).Row
'    ActiveSheet.Range("a" & lrow).Select
'    ActiveSheet.Paste
'    Sheets("Sheet1").Select



    rownum = Selection.Row
    If rownum = 3 Then
    Selection.AutoFilter
    GoTo label3
    End If

    Range("a4:a" & lastrow).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.EntireRow.Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Application.CutCopyMode = False
    Selection.EntireRow.Delete
'    Selection.AutoFilter


'column c again/////////////

label3:

    ActiveSheet.Range("c65536").Select
lastrow = Selection.End(xlUp).Row

ActiveSheet.Range("c4:c" & lastrow).Select

    Selection.AutoFilter
    ActiveSheet.Range("$c$1:$c$" & lastrow).AutoFilter Field:=1, Criteria1:="="

    Application.CutCopyMode = False

    rownum = Selection.Row
    If rownum = 3 Then
    Selection.AutoFilter
    GoTo label4
    End If

    Range(Selection, Selection.End(xlToRight)).Select

        Range("a4:a" & lastrow).Select
    Range(Selection, Selection.End(xlToRight)).Select

    Selection.EntireRow.Copy
    Sheets("Sheet2").Select
    'lrow = ActiveSheet.Range("A65536").End(xlUp).Row

    lrow = Cells.Find(what:="*", after:=[a1], searchorder:=xlByRows, _
    searchdirection:=xlPrevious).Row

    ActiveSheet.Range("a" & lrow + 1).Select
    ActiveSheet.Paste
    Sheets("Sheet1").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Application.CutCopyMode = False
    Selection.EntireRow.Delete
'     Selection.AutoFilter

'//////////////////////////  over  /////////////////////////////

label4:

ActiveSheet.Range("a1").Select
For i = 4 To lastrow
Range("a" & i).Select
If Range("a" & i).Value = "MidAmerica" Or Range("a" & i).Value = "Northeast" Or Range("a" & i).Value = "Southeast" Or _
Range("a" & i).Value = "West" Then
GoTo cont
Else

Rows(i).Select
Application.CutCopyMode = False
Selection.Cut
    Sheets("Sheet2").Select

        lrow = Cells.Find(what:="*", after:=[a1], searchorder:=xlByRows, _
    searchdirection:=xlPrevious).Row

    Range("a" & lrow + 1).Select
    ActiveSheet.Paste
    j = j + 1
    Sheets("sheet1").Select
       Selection.Delete Shift:=xlUp
   End If
cont:
Next i


'/////// column b ///////////

ActiveSheet.Range("a1").Select
For i = 4 To lastrow
Range("b" & i).Select
If Range("b" & i).Value = "CA" Or Range("b" & i).Value = "AZ" Then
GoTo cont2
Else

Rows(i).Select
Application.CutCopyMode = False
Selection.Cut
    Sheets("Sheet2").Select
    lrow = Cells.Find(what:="*", after:=[a1], searchorder:=xlByRows, _
    searchdirection:=xlPrevious).Row
    Range("a" & lrow + 1).Select
    ActiveSheet.Paste
    j = j + 1
    Sheets("sheet1").Select
    Selection.Delete Shift:=xlUp
   End If
cont2:
Next i

'///////////column c //////////

ActiveSheet.Range("a1").Select
For i = 4 To lastrow
Range("c" & i).Select
If Range("c" & i).Value = "SG" Then
GoTo cont3
Else

Rows(i).Select
Application.CutCopyMode = False
Selection.Cut
    Sheets("Sheet2").Select
    lrow = Cells.Find(what:="*", after:=[a1], searchorder:=xlByRows, _
    searchdirection:=xlPrevious).Row

    Range("a" & lrow + 1).Select
    ActiveSheet.Paste
    j = j + 1
    Sheets("sheet1").Select
    Selection.Delete Shift:=xlUp
   End If
cont3:
Next i

'//////////column l/////////////
ActiveSheet.Range("a1").Select
For i = 4 To lastrow
Range("l" & i).Select
If Range("l" & i).Value <= "01/06/2014" And Range("l" & i).Value >= "01/01/2013" Then
GoTo cont4
Else

Rows(i).Select
Application.CutCopyMode = False
Selection.Cut
    Sheets("Sheet2").Select

        lrow = Cells.Find(what:="*", after:=[a1], searchorder:=xlByRows, _
    searchdirection:=xlPrevious).Row

    Range("a" & lrow + 1).Select
    ActiveSheet.Paste
    j = j + 1
    Sheets("sheet1").Select
    Selection.Delete Shift:=xlUp
   End If
cont4:
Next i

'//////////column m/////////////
ActiveSheet.Range("a1").Select
For i = 4 To lastrow
Range("m" & i).Select
If Range("m" & i).Value = "12/01" Or Range("m" & i).Value = "12/05" Then
GoTo cont5
Else

Rows(i).Select
Application.CutCopyMode = False
Selection.Cut
    Sheets("Sheet2").Select

        lrow = Cells.Find(what:="*", after:=[a1], searchorder:=xlByRows, _
    searchdirection:=xlPrevious).Row


    Range("a" & lrow + 1).Select
    ActiveSheet.Paste
    j = j + 1
    Sheets("sheet1").Select
    Selection.Delete Shift:=xlUp
   End If
cont5:
Next i

'//////////column q and r/////////////
ActiveSheet.Range("a1").Select
For i = 4 To lastrow
Range("q" & i).Select
If Range("q" & i).Value <> " " And Range("r" & i).Value <> " " And Range("u" & i).Value <> " " _
And Range("z" & i).Value <> " " And Range("aa" & i).Value <> " " And Range("ab" & i).Value <> " " _
And Range("b" & i).Value <> " " And Range("j" & i).Value <> " " Then
GoTo cont6
Else

Rows(i).Select
Application.CutCopyMode = False
Selection.Cut
    Sheets("Sheet2").Select

        lrow = Cells.Find(what:="*", after:=[a1], searchorder:=xlByRows, _
    searchdirection:=xlPrevious).Row

    Range("a" & lrow + 1).Select
    ActiveSheet.Paste
    j = j + 1
    Sheets("sheet1").Select
    Selection.Delete Shift:=xlUp
   End If
cont6:
Next i


End Sub