看板 Office 關於我們 聯絡資訊
軟體:Excel 版本:Office 365 問題1: A B C 1 甲 東 10 2 甲 東 10 3 乙 西 20 4 乙 東 20 5 乙 東 20 6 丙 東 30 求B欄為東,且A欄不重複的C欄值總合。 想得到的答案是10 + 20 + 30 = 60。 請問公式要怎麼寫呢? 問題2: 寫VBA用到FindNext時,搜尋到表單最後,又會重頭搜尋,無法跳出迴圈。 我的問題是要怎麼判斷出已搜尋至該表最後一筆符合的結果,並跳出呢? 網路上有看到做法是每搜到一筆,就將它的值改掉, 這樣搜完後就不會再搜到符合的結果,自然就能判斷要跳出迴圈。 另外自己有想到方法是,判斷當前row值 < 前一筆結果的row值,就跳出。 但FindNext函數是否有內建更好的判斷方法呢?或是大家有沒有更簡潔的方法~ -- ╭─╮ ──╮ ╭─┤╭╮ ╭╭─╮╮ ╭ │ │ │ ││││││ ││││ ╰─╮ ╭─┼╮╰─┼╯││││○││││ │ │ ││ │ ││││ ││││ ╰─╯ ╰─╯╰──╯ ╰╰╯╰─╯╰╯╯ 傻瓜,我們都一樣~~ ψsagwow -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.154.177 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1670338335.A.E17.html
kinomon: 複雜判斷可以用sumproduct 12/06 23:41
kinomon: https://i.imgur.com/tUgVB4S.jpg 12/06 23:43
waiter337: 用字典key放A+B自動去重 item放C 跑迴圈 12/07 00:56
waiter337: 也可以搭配字典的exists判斷是否之前已放入字典 12/07 00:57
waiter337: Sub tt() 12/07 01:05
waiter337: Set d = CreateObject("scripting.dictionary") 12/07 01:05
waiter337: For i = 1 To Cells(Rows.Count, 1).End(3).Row 12/07 01:05
waiter337: If Cells(i, 2) = "東" Then 12/07 01:05
waiter337: If d.exists(Cells(i, 2).Value) = False Then 12/07 01:05
waiter337: d(Cells(i, 1).Value) = Cells(i, 3).Value 12/07 01:05
waiter337: End If 12/07 01:05
waiter337: End If 12/07 01:05
waiter337: Next 12/07 01:05
waiter337: For Each Z In d.items(): x = x + Z: Next 12/07 01:05
waiter337: Range("e1") = x 12/07 01:06
waiter337: End Sub 12/07 01:06
newacc: 微軟官方說明文件中的建議跟你想到的方式差不多 12/07 10:48
newacc: https://bit.ly/3F0wTWU 12/07 10:48
newacc: 第一題想確認,有可能同時出現(甲,東,10)和(甲,東,20)嗎? 12/07 10:50
sagwow: 不會! 第二題解了,第一題用w大的方法有成功,但表單變 12/07 19:48
sagwow: 很卡QQ 12/07 19:48
newacc: 第一題可以嘗試移除重複+SUMIF 12/08 11:09
windknife18: 第一題 =SUM(UNIQUE(FILTER(A:C,B:B="東"))) 12/08 11:55