Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel中重复宏,直到到达空白单元格_Excel_Vba - Fatal编程技术网

在Excel中重复宏,直到到达空白单元格

在Excel中重复宏,直到到达空白单元格,excel,vba,Excel,Vba,我对excel中的VBA非常陌生,我记录并修改了一个宏,该宏获取一个值,然后基于“IF”语句,它使用答案计算某个单元格中的值。我需要重复这个步骤,直到a列中有一个空白单元格 我的数据是 此处前4列中报告的实际浪费的零件号遵循我的代码,我需要重复该代码,直到A列为空 Sub MissingMix() ' ' MissingMix Macro ' Calculates Missing Mix based on scrap ' ' Keyboard Shortcut: Ctrl+q Appl

我对excel中的VBA非常陌生,我记录并修改了一个宏,该宏获取一个值,然后基于“IF”语句,它使用答案计算某个单元格中的值。我需要重复这个步骤,直到a列中有一个空白单元格

我的数据是

此处前4列中报告的实际浪费的零件号遵循我的代码,我需要重复该代码,直到A列为空

Sub MissingMix()
'
' MissingMix Macro
' Calculates Missing Mix based on scrap
'
' Keyboard Shortcut: Ctrl+q

    Application.Goto Reference:="R1C1"
    Application.Goto Reference:="R3C8"
    ActiveCell.FormulaR1C1 = "=IF(RC[-5]-RC[-6]>0,SUM(RC[-5]-RC[-6])*RC[+1],"""")"
    Application.Goto Reference:="R3C9"
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-8],'QAD Weights'!RC[-8]:R[37]C[-5],4)"
    End Sub
使用以下命令:

' get active sheet
Dim CurrentSheet As Worksheet
Set CurrentSheet = ActiveWorkbook.ActiveSheet

' defining starting row
Dim Values As Range
Set Values = Rows(5)

For i = 2 To Values.Cells.Count - 1
    If Values.Cells(i).Text <> "" Then

        ' Do Something ...

    End If
Next
使用以下命令:

' get active sheet
Dim CurrentSheet As Worksheet
Set CurrentSheet = ActiveWorkbook.ActiveSheet

' defining starting row
Dim Values As Range
Set Values = Rows(5)

For i = 2 To Values.Cells.Count - 1
    If Values.Cells(i).Text <> "" Then

        ' Do Something ...

    End If
Next

我不会使用
.End(xlDown)
-如果列在单元格A1中只有一个值,它将返回1048576作为最后一行(与选择单元格A1并按Ctrl+Down键相同)。最好使用
CurrentSheet.Cells(CurrentSheet.Rows.Count,1)。End(xlUp)。Row
。是的,我理解这一点。这就是我提出另一个答案的原因。但是使用
xlUp
也有问题。如果中间有空白单元格,你就不会意识到它们。如果这是你需要知道的,那么你就不能使用它。莫尔,谢谢你上面的回答,我可以让它工作,是的,它确实显示了工作表中的行数,但我不知道如何让If和lookup函数重复这么多次,这可能是一个愚蠢的问题,但就像我说的,我对此非常陌生。提前谢谢,请解释更多关于你的情况。可以在表格中提供一些示例数据。显示您想要的内容。废料总数8/29/17项目编号报告的实际2436IDPAV2R 3 4 2436IDPAV2Y 4 2448idpav2r 2 2448idpav2Y 0 4 2448REPTHNDG 3 2448REPTHNR 4 13 2448REPTHNY 4 4 2460 repthnR 14 36 2460 repthnY 4 9 2460IDPAV2R 0 2这是前3列中的数据我的宏以列计算值,我的问题是重复宏直到列A为空,因为行数每天都在更改。如果这很简单,我很抱歉,但我是一个新手,我不会使用
.End(xlDown)
-如果列在单元格A1中只有一个值,它将返回1048576作为最后一行(与选择单元格A1并按Ctrl+Down相同)。最好使用
CurrentSheet.Cells(CurrentSheet.Rows.Count,1)。End(xlUp)。Row
。是的,我理解这一点。这就是我提出另一个答案的原因。但是使用
xlUp
也有问题。如果中间有空白单元格,你就不会意识到它们。如果这是你需要知道的,那么你就不能使用它。莫尔,谢谢你上面的回答,我可以让它工作,是的,它确实显示了工作表中的行数,但我不知道如何让If和lookup函数重复这么多次,这可能是一个愚蠢的问题,但就像我说的,我对此非常陌生。提前谢谢,请解释更多关于你的情况。可以在表格中提供一些示例数据。显示您想要的内容。废料总数8/29/17项目编号报告的实际2436IDPAV2R 3 4 2436IDPAV2Y 4 2448idpav2r 2 2448idpav2Y 0 4 2448REPTHNDG 3 2448REPTHNR 4 13 2448REPTHNY 4 4 2460 repthnR 14 36 2460 repthnY 4 9 2460IDPAV2R 0 2这是前3列中的数据我的宏以列计算值,我的问题是重复宏直到列A为空,因为行数每天都在更改。我很抱歉,如果这是简单的,但我是一个完全的新手