VBA Excel宏根据多个条件更新单元格值

VBA Excel宏根据多个条件更新单元格值,vba,excel,Vba,Excel,这是我不可能解决的,我在我的沸点上限,所以我真的可以使用您的指示或帮助。我在标题中附加了一个图像。我需要一个vba宏来更新/更改E列(Ve规划)中的值,并满足以下条件: D列必须为空 必须仅为A列中的相同值更新 第一列(操作)=激光器 如果F列(无)的值相等 然后用激光操作+10天的E列值更新E列操作=SUDURA的值 我不知道你是否理解这一混乱局面,但如果你理解,任何帮助都将不胜感激 非常感谢 试试下面的短代码,它在我的测试中工作,数据记录有限。让我知道它是否也适用于您的数据 Sub Upd

这是我不可能解决的,我在我的沸点上限,所以我真的可以使用您的指示或帮助。我在标题中附加了一个图像。我需要一个vba宏来更新/更改E列(Ve规划)中的值,并满足以下条件:

  • D列必须为空
  • 必须仅为A列中的相同值更新
  • 第一列(操作)=激光器
  • 如果F列(无)的值相等
  • 然后用激光操作+10天的E列值更新E列操作=SUDURA的值

    我不知道你是否理解这一混乱局面,但如果你理解,任何帮助都将不胜感激


    非常感谢

    试试下面的短代码,它在我的测试中工作,数据记录有限。让我知道它是否也适用于您的数据

    Sub UpdateVEPlanning()
    
    
    Dim sht                                 As Worksheet
    Dim LastRow, lRow                       As Long
    
    ' modify "Sheet1" to whatever worksheet name you have
    Set sht = ThisWorkbook.Worksheets("Sheet1")
    
    ' find last row in sheet with data
    LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).row
    
    For lRow = 2 To LastRow
    
        If sht.Cells(lRow, 1) = sht.Cells(lRow - 1, 1) Then
            If Not (sht.Cells(lRow, 9).Find("SUDURA") Is Nothing) And (IsEmpty(sht.Cells(lRow, 4).Value2) Or sht.Cells(lRow, 4).Value2 <= 0) Then
                If sht.Cells(lRow, 6) = sht.Cells(lRow - 1, 6) Then
                    sht.Cells(lRow, 5) = sht.Cells(lRow - 1, 5) + 10
                End If
            End If
        End If
    
    Next
    
    
    End Sub
    
    子更新计划()
    将sht变暗为工作表
    昏暗的最后一排,像长一样低
    '将“Sheet1”修改为任何工作表名称
    Set sht=此工作簿。工作表(“表1”)
    '查找包含数据的工作表中的最后一行
    LastRow=sht.Cells(sht.Rows.Count,“A”).End(xlUp).row
    对于lRow=2至最后一行
    如果短单元格(lRow,1)=短单元格(lRow-1,1),则
    
    如果不是(sht.Cells(lRow,9).Find(“SUDURA”)什么都不是)和(IsEmpty(sht.Cells(lRow,4.Value2)或sht.Cells(lRow,4.Value2),您能详细说明需求并显示您的代码尝试,并解释为什么它们不能解决您的需求吗?您好!这是一个调度逻辑,可以说,意味着对于每个生产订单(columa)wich在D列中没有过账的完工数量,并且在同一周(F列)有下一个操作SUDURA(I列)作为激光手术,那么E列中的值必须是E列中激光手术+10天的值。这是一系列手术,并且在同一周是一个限制。我的代码尝试很可怜,因为我是一个完全的新手。请在你的评论中用这个新信息编辑你的问题,并发布你的代码。@CatalincerAt,我想您的附表中有一个类型错误。在您的第四行数据中,“描述”中应该是“BRAS EXTERMITE AX 36-39”,就像上面这一行,对吗?也许听@PA。这项任务非常简单,我们很乐意为您提供帮助。但是,我们喜欢将我们的努力与您自己的努力相匹配。如果您至少发布了一些您尝试过的内容,那么您可能会在发布后几分钟内收到完整的答复。如果您不这样做,那么人们就不太可能响应您的要求nd.它很有效…就像一个符咒。我现在正试图理解你所做的。非常感谢。如果我不理解你的代码,我可以问更多关于代码逻辑的问题吗?@Catalinternat Sure如果a列的值不符合顺序,例如FPO120000之间有一个不同的值。当我试图理解你的代码时,设置了v仅当前一行在A列中具有相同的值时,列E的值,对吗?lRow-1?因此数据必须在由A列中相同的值组成的块中,不能相互交织。@Catalinter在运行此代码之前,您可以对整个表进行排序。先按A列排序,然后按l列排序。