Board logo

標題: 抓取資料小問題 [打印本頁]

作者: jj369963    時間: 2014-9-17 22:11     標題: 抓取資料小問題

Dear大大們:

我的原始資料在sheet1,想從sheet1抓資料,完成sheet2

sheet2!B2=SUMPRODUCT((Sheet1!$A:$A=$A2)*(Sheet1!$C:$C=B$1),(Sheet1!$E:$E))
這是我用的公式,請不要往下拖曳,系統會擋掉
請問有辦法修改成其他公式,讓它計算上不會當掉
或用vba
感謝

[attach]19163[/attach]
作者: luhpro    時間: 2014-9-17 23:26

Dear大大們:

我的原始資料在sheet1,想從sheet1抓資料,完成sheet2

sheet2!B2=SUMPRODUCT((Sheet1!$ ...
jj369963 發表於 2014-9-17 22:11

用 VBA 比較簡單:
  1. Private Sub Workbook_Open()
  2.   Dim iCol%
  3.   Dim lRow&
  4.   Dim sStr$
  5.   Dim vD
  6.   
  7.   Set vD = CreateObject("Scripting.Dictionary")
  8.   lRow = 2
  9.   With Sheets("Sheet1")
  10.     Do While .Cells(lRow, 1) <> ""
  11.       sStr = .Cells(lRow, 1) & "_" & .Cells(lRow, 3)
  12.       vD(sStr) = vD(sStr) + .Cells(lRow, 5)
  13.       lRow = lRow + 1
  14.     Loop
  15.   End With
  16.   
  17.   lRow = 2
  18.   With Sheets("Sheet2")
  19.      Do While .Cells(lRow, 1) <> ""
  20.        For iCol = 2 To 7
  21.          sStr = .Cells(lRow, 1) & "_" & .Cells(1, iCol)
  22.          .Cells(lRow, iCol) = vD(sStr)
  23.        Next
  24.        lRow = lRow + 1
  25.      Loop
  26.   End With
  27. End Sub
複製代碼

作者: Hsieh    時間: 2014-9-18 08:56

回復 1# jj369963
計算範圍的問題
B2=SUMPRODUCT((OFFSET(Sheet1!$A$1,,,COUNTA(Sheet1!$A:$A),)=$A2)*(OFFSET(Sheet1!$C$1,,,COUNTA(Sheet1!$A:$A),)=B$1),OFFSET(Sheet1!$E$1,,,COUNTA(Sheet1!$A:$A),))
向右向下複製
作者: ML089    時間: 2014-9-18 10:54

回復 1# jj369963


    =SUMIFS(Sheet1!$E:$E,Sheet1!$A:$A,$A2,Sheet1!$C:$C,B$1)
作者: ML089    時間: 2014-9-18 11:28

回復 1# jj369963

如果是單筆對應關係時,先用MATCH找到第一筆資料再用COLUMN(A:A)計數增加,會比SUMPRODUCT快很多
=N(OFFSET(Sheet1!$E$1,MATCH($A2,Sheet1!$A:$A,)-1+COLUMN(A:A)-1,))
右拉下拉
作者: ML089    時間: 2014-9-18 11:37

再仔細看,你這資料是單欄轉為6欄,直接用數學方式計算會更快
=N(OFFSET(Sheet1!$E$1,MATCH($A2,Sheet1!$A:$A,)-1+COLUMN(A:A)-1,))
右拉下拉

當然還有更快的的方式,採用塊狀資料抓入方式
B2:G2 =TRANSPOSE(OFFSET(Sheet1!$E$2,MAX(ROW()-2)*6,,6))
陣列輸入方式(CTRL+SHIFT+ENTER三鍵齊按方式輸入公式)
此方式輸入麻煩、修改麻煩,不熟就略過吧!




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