2016-01-19 56 views
2

我正在完成一些課程以完成高級電子表格。當另一個單元格=「TRUE」時將計算應用於單元格的值

我正在爲銷售電子設備的零售商創建電子表格。我有多張表格,包括客戶詳細信息,產品詳細信息(包括庫存和重新訂購功能),「訂單處理屏幕」和「訂單歷史記錄屏幕」。在這個訂單處理屏幕上,用戶可以從列表中選擇他們的名字,從列表中選擇他們想要的產品,然後點擊一個按鈕來註冊他們的訂單。

當用戶單擊以註冊他們的訂單時,它會完全顯示在訂單歷史記錄表單中,並且在每次點擊後都不會被替換。每當產品被購買時,我都被困在如何減少1。

我目前的解決方案是,當訂單出現在訂單歷史記錄列表中(即單擊宏並從訂單處理屏幕提取詳細信息並放入訂單歷史記錄列表中)後,會比較產品名稱針對產品列表中的所有產品名稱,並在達到匹配時顯示「TRUE」。喜歡的東西:

IF <TRUE/FALSE cell> = "TRUE" 
-1 from <stock number cell> 

當一個新的訂單進來,通式檢查其名稱,並在產品列表表,發現其股票數量和減少1.它,我無法弄清楚如何降低當我的TRUE/FALSE行顯示TRUE時,數字加1。

編輯:這是形勢的一些照片陪它:

Product List

Order purchase list

+0

看像偏移( '刺針'!$ A $ 1,比賽(督促,督促山坳,0),列的股票NUM ).value = offset('prods'!$ a $ 1,match(prod,prod col,0),col number of stock).value-1 –

+0

更好的解決方案可能有一個開始,實際股票,然後是一個浮動股票這個價值減去訂單?就像一個公式 –

回答

1

我的建議是使用Worksheet_Change事件包括表示該產品有電池片改變。您的函數查看產品列表以獲得TRUE/FALSE,然後將產品計數減1。 (不要忘了標誌重置回假的!)

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
    '--- example assumes flag indicating product has changed in column B, rows 2-100 
    ' and the product count is on the same row as the flag in column G 
    Dim productChangeFlag As Variant 
    Dim ws As Worksheet 

    Set ws = Target.Parent 
    If Intersect(Target, ws.Range("B2:B100")) Is Nothing Or IsEmpty(Target) Then Exit Sub 

    Application.EnableEvents = False 
    For Each productChangeFlag In Target 
     If WorksheetFunction.IsLogical(productChangeFlag) And productChangeFlag = True Then 
      ws.Cells(productChangeFlag.Row, 7).Value = ws.Cells(productChangeFlag.Row, 7).Value - 1 
      ws.Cells(productChangeFlag.Row, productChangeFlag.Column).Value = False 
     End If 
    Next productChangeFlag 
    Application.EnableEvents = True 

End Sub 
相關問題