2017-02-21 24 views
1

映射值我的情況是如下情況:其中存在工作班次即碼我有一個表:求和在Excel

John | 1 | 34 | 1 | 34 | Total: | 40 <---- 
Maria| 1 | 1 | 1 | 1 | Total: | 32 <----I need a formula for this last cell 

每一個此代碼具有時間量在另一個表中設置。

Codes | Hours 
1  | 8 
34 | 12 

我需要根據代碼計算總工時量。我已經找到了使用INDEX和MATCH將值映射到另一個表的方法,但是當我嘗試對很多行進行操作時,它只給了我映射的第一個代碼,而不是具有映射值的數組。

+0

你能數最多的時候每個代碼出現,然後'INDEX'-'MATCH'超過每碼小時數數,然後乘以一個由其他? – Jonathan

+0

好吧,我可能可以,但如果我添加了很多不同的代碼,我不需要爲每一個代碼做這個? – Rokner

+1

是的,但是你不必這麼做嗎?如果您使用動態範圍或表格,則所有內容都應自動更新。我明天晚上才能到電腦,但如果你還沒有得到答案,我會嘗試創建一個例子。 – Jonathan

回答

1

我認爲以下自定義VBA函數有幫助(請參閱下面的示例)。使用方法如下:

=multipleMatch(range of cells to look in, range of cells to INDEX, range of cells to MATCH) 

讓我知道如果您有任何問題。

Function multipleMatch(inputRng As Range, indexRng As Range, matchRng As Range) As Double 

    On Error GoTo errhandle 

    Dim runTot As Double 
     runTot = 0 
    Dim cll As Range 
    Dim mtch As Long 

    For Each cll In inputRng 
     If Not IsError(cll.Value) Then 
      On Error Resume Next 
      mtch = Application.WorksheetFunction.Match(cll.Value, matchRng, 0) 
      On Error GoTo errhandle 
      If mtch <> 0 Then 
       runTot = indexRng(mtch) + runTot 
      End If 
     End If 
    mtch = 0 
    Next cll 
    multipleMatch = runTot 
    Exit Function 


errhandle: 
    multipleMatch = CVErr(xlErrValue) 
    Exit Function 

End Function 

example

+1

謝謝。它的工作就像一個魅力。只有一個問題,當我申請一行代碼時,它的工作正常,但是當我將它應用於一列代碼時,它提供了非常多的隨機數。什麼可能導致這種情況? – Rokner

+1

好的,有一個錯誤實際上是由於沒有將'mtch'設置爲0而導致的,當它有一個空單元格時,它將最後一個代碼添加到總數中。我修正了在'mtch = Application ....'行上添加'mtch = 0'的問題。 – Rokner

+0

好點 - 謝謝。我應該看起來更近一點,但我很匆忙。我很高興它的幫助:) – Jonathan

1

爲什麼你有上表向右走? 有沒有約翰在裏面呢?

如果上表是實際工作班次的記錄,最下面一個是班次代碼的默認工作時間,並且您計劃讓更多人工作,那麼我可以建議以下解決方案,該解決方案也將重新組織你的表一點點,並利用Excel表格,這將讓你避免維護公式和範圍:

  1. 選擇底部的表範圍,按Ctrl + T將變成 一個藍色的桌子。
  2. 重命名列僅用於本示例的工作 - 您可以在完成步驟後重命名。
  3. 你的「上」表被換位,有3列名,換碼,小時。
  4. 做同樣的事情:選擇範圍,按ctrl + t,在彈出窗口中勾選「表頭」。重命名列中的圖片。
  5. 的第一個單元格時間表2的列(如圖),粘貼此公式並按Enter。 (現在是改變列名個人喜好的好時機)

    = SUMIF(表1 [移位碼],[@ [移位碼],表1 [默認小時])

  6. 創建數據透視表表#2旁邊或其中任何位置。

如果向表1和表2添加數據,公式將自動在表2和數據透視表源中更新。刷新數據透視表以查看更新的總計。

這就是它的樣子。

我希望這是你試圖實現的。

exampl ,如果你願意,你可以把移位碼到數據透視表的列區域,如下面的圖片,並請有碼細分以及一個grandtotal:

pic2

***** PS請記住將最有用的答案標記爲「答案」,並在其他答案或評論有幫助時投票。*****

+0

感謝您的回答,但我不確定那是我需要的。我會用更好的表格更新我的問題 – Rokner

+0

@Rokner如果數據集向右和向下擴展,我無法看到這是如何可持續的。但是,我認爲這種格式需要的確是非常強烈,在這種情況下,如果序列和網格很重要,您應該使用其他解決方案 –

+0

,您可以在表中插入增量計數功能,並且可以將這些代碼進入我的解決方案網格 - fyi。 –