2016-06-28 152 views
2

我不可能解決這個問題,即時在我的沸點上限,所以我可以真正使用你的指導或幫助。我在標題中附加了一張圖片。我需要一個vba宏來更新/更改列E(Ve規劃)中的值,並具有以下接口:VBA Excel宏根據多個標準更新單元格值

  1. D列必須爲空。
  2. 必須僅更新列A中的相同值。
  3. 列I(操作)= LASER。
  4. 如果列F(W NO)值相等。

然後更新操作LASER + 10天操作= SUDURA列E值的列E值。

enter image description here

我不知道你是否瞭解這個爛攤子,但如果這樣做,任何幫助,不勝感激。

非常感謝!

+1

請問您能否詳細說明要求並顯示您的代碼嘗試並解釋他們爲什麼不解決您的需求? –

+0

你好!可以這麼說,這是一個調度邏輯,意味着對於每個生產訂單(列A)而言,列D中沒有完成的數量,並且在同一周(列F)具有與操作LASER相似的下一個操作SUDURA(列I) ,那麼來自列E的值必須是來自列E的值,以用於操作LASER + 10天。它的一系列操作,並在同一周內成爲一個約束。我的代碼嘗試是可悲的,因爲我是一個總新手。 –

+1

請在您的評論中使用此新信息編輯您的問題,併發布您的代碼。 –

回答

1

嘗試下面的短代碼,它在我的測試中使用有限的數據記錄進行工作。讓我知道它是否也適用於您的數據。

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 
+0

它的作品...就像一個魅力。即時嘗試現在瞭解你做了什麼。太感謝了。如果我不明白它,我可以詢問更多有關您的代碼邏輯的問題嗎? –

+0

@CatalinCernat sure –

+1

如果列A的值不正確,例如FPO120000之間存在不同的值,那該怎麼辦?因爲我試圖理解你的代碼只有在列A中有相同的值時才設置E列的值,對嗎? lRow - 1?因此數據必須在A列中包含相同值的塊中,因此不能交織在一起。 –

相關問題