Board logo

標題: 如何在第一次比對找不到時自動再比對第二條件套取符合的值?? [打印本頁]

作者: p6703    時間: 2012-5-6 12:11     標題: 如何在第一次比對找不到時自動再比對第二條件套取符合的值??

如附件有明細及統計二報表,統計報表列出套取明細中的總數量,但如何在比對不到料號A時可再自動比對料B,並將同客戶及料號的數量加總???

如在明細中有統計工作表上沒有的客戶及料號資料,是否又可設定讓其增加在統計報表最後一列(或此只能使用巨集才能達成???)

[attach]10823[/attach]
作者: ANGELA    時間: 2012-5-6 18:28

=IF(SUMPRODUCT((明細!$A$2:$A$23=A2)*(明細!$B$2:$B$23=B2)*(明細!$D$2:$D$23)),SUMPRODUCT((明細!$A$2:$A$23=A2)*(明細!$B$2:$B$23=B2)*(明細!$D$2:$D$23)),SUMPRODUCT((明細!$A$2:$A$23=A2)*(明細!$C$2:$C$23=B2)*(明細!$D$2:$D$23)))
作者: p6703    時間: 2012-5-6 19:53

感謝ANGELA版主,解決了小弟的大問題,但請問小弟的第二個問題,如果要將沒有的資料加在統計明細中,是否只能使用巨集達成???
作者: ANGELA    時間: 2012-5-6 23:58

A2=INDEX(明細!$A$1:$A$1000,SMALL(IF(明細!$A$2:$A$100<>"",ROW($A$2:$A$100),999),ROW(A1)))&""  陣列公式
料號是要a料號還是b料號?可用VLOOKUP抓取
作者: Hsieh    時間: 2012-5-7 09:34

回復 3# p6703
如果有了配對清單
C2=SUMPRODUCT((IF(COUNTIF(明細!$B$2:$B$23,統計!$B2),明細!$B$2:$B$23,明細!$C$2:$C$23)=$B2)*(明細!$A$2:$A$23=統計!$A2)*(明細!$D$2:$D$23))

但是公式取得所有配對清單會很麻煩,且當數量多時可能會很慢
直接使用VBA執行會比較恰當
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. With Sheets("明細")
  4.   For Each a In .Range(.[A2], .[A2].End(xlDown))
  5.      For Each b In a.Offset(, 1).Resize(, 2)
  6.        If IsEmpty(d(a & b)) Then d(a & b) = Array(a, b, a.Offset(, 3))
  7.      Next
  8.   Next
  9. End With
  10. With Sheets("統計")
  11. .UsedRange.Offset(1) = ""
  12. .[A2].Resize(d.Count, 3) = Application.Transpose(Application.Transpose(d.items))
  13. End With
  14. End Sub
複製代碼

作者: p6703    時間: 2012-5-8 00:11

感謝ANGELA及Hsieh版主的不吝教導,解決了小弟的大問題,先自行摸索看看,如有問題再行請教^^




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)