Ô B25976 bạn gõ số 1 vào, sau đó nhập công thức mảng này ở D7:Chào mọi người,
Mình có thắc mắc như file đính kèm. Đã mô tả rõ chi tiết.
Xin các cao nhân giúp mình với ạ.
Mình xin cảm ơn trước!
D7=IF(SUM(B7:B8)=2,B7,1/SUM(OFFSET(C8,-MATCH(1,N(OFFSET(B8,-ROW($1:$100),)),),):OFFSET(C7,MATCH(1,B8:$B$25976,)-1,)))
Sub Ketquamongdoi()
Dim sArr, dArr, tArr, I As Long
Dim Dic As Object, N As Long, Irow As String, Kq As Double
sArr = Range("B7", Range("B65535").End(xlUp)).Value
ReDim tArr(1 To UBound(sArr), 1 To 2)
Set Dic = CreateObject("Scripting.Dictionary")
For I = 1 To UBound(sArr, 1)
If sArr(I, 1) <> Empty Then
Irow = I: N = sArr(I, 1)
End If
If Not Dic.Exists(Irow) Then
Dic.Add Irow, I
tArr(I, 1) = N: tArr(I, 2) = 1
Else
tArr(Dic.Item(Irow), 2) = tArr(Dic.Item(Irow), 2) + 1
End If
Next I
ReDim dArr(1 To UBound(tArr), 1 To 1)
For I = 1 To UBound(tArr, 1)
If tArr(I, 2) <> Empty Then Kq = tArr(I, 1) / tArr(I, 2)
dArr(I, 1) = Kq
Next I
Range("E7").Resize(I - 1) = dArr
Set Dic = Nothing
End Sub
Ô B25976 bạn gõ số 1 vào, sau đó nhập công thức mảng này ở D7:
Yêu cầu bấm CTrl+Shift+Enter rồi copy xuống!!!Mã:D7=IF(SUM(B7:B8)=2,B7,1/SUM(OFFSET(C8,-MATCH(1,N(OFFSET(B8,-ROW($1:$100),)),),):OFFSET(C7,MATCH(1,B8:$B$25976,)-1,)))
p/s: chỗ ROW($1:$100) tôi đang cho dữ liệu bạn nhiều nhất có 100 ô rông liên tiếp nếu nhiều hơn bạn có thể sửa thành: ROW($1:$1000) hay ROW($1:$10000) hoặc ROW(INDIRECT("1:"&ROWS($B$7:B7))), càng nhiều thì công thức càng nặng.
Macro hay quá. Cảm ơn bạn!Em thấy dữ lieu đến 25972 dòng nên em góp vui 1 tẹo
Mã:Sub Ketquamongdoi() Dim sArr, dArr, tArr, I As Long Dim Dic As Object, N As Long, Irow As String, Kq As Double sArr = Range("B7", Range("B65535").End(xlUp)).Value ReDim tArr(1 To UBound(sArr), 1 To 2) Set Dic = CreateObject("Scripting.Dictionary") For I = 1 To UBound(sArr, 1) If sArr(I, 1) <> Empty Then Irow = I: N = sArr(I, 1) End If If Not Dic.Exists(Irow) Then Dic.Add Irow, I tArr(I, 1) = N: tArr(I, 2) = 1 Else tArr(Dic.Item(Irow), 2) = tArr(Dic.Item(Irow), 2) + 1 End If Next I ReDim dArr(1 To UBound(tArr), 1 To 1) For I = 1 To UBound(tArr, 1) If tArr(I, 2) <> Empty Then Kq = tArr(I, 1) / tArr(I, 2) dArr(I, 1) = Kq Next I Range("E7").Resize(I - 1) = dArr Set Dic = Nothing End Sub
Góp thêm một Sub, không "chơi" Dic.Em thấy dữ lieu đến 25972 dòng nên em góp vui 1 tẹo
Mã:Sub Ketquamongdoi() Dim sArr, dArr, tArr, I As Long Dim Dic As Object, N As Long, Irow As String, Kq As Double ............................ Range("E7").Resize(I - 1) = dArr Set Dic = Nothing End Sub
(Xin lỗi vì không phải cao nhân cũng "xía" vào.)Xin các cao nhân giúp mình với ạ.
Sub GPE()
Dim sArr(), I As Long, J As Long, K As Long, R As Long
sArr = Range("B7", Range("C7").End(xlDown)).Value2
R = UBound(sArr)
For I = 1 To R - 1
If sArr(I + 1, 1) = "" Then
For J = I + 1 To R
If sArr(J, 1) = "" Then
K = K + 1
Else
Exit For
End If
Next J
For J = I To I + K
sArr(J, 1) = 1 / (K + 1)
Next J
K = 0
End If
Next I
Range("D7").Resize(R) = sArr
End Sub
Bởi nếu thay vd. thành B7 = 2 thì kết quả không đúng.Mình làm được rồi. Cảm ơn bác ạ.
=IF(B7="",D6,1/SUM(OFFSET(C7,,,MATCH(1,OFFSET(B8,,,100),0))))
=IF(B7="",D6,1/SUM(OFFSET(C7,,,IFERROR(MATCH(1,OFFSET(B8,,,100),0),100))))
Chào mọi người,
Mình có thắc mắc như file đính kèm. Đã mô tả rõ chi tiết.
Xin các cao nhân giúp mình với ạ.
Mình xin cảm ơn trước!
D7 =IF(B7="",D6,1/SUM(OFFSET(C7,,,IFERROR(MATCH(1,B8:B208,0),200))))
Bạn sửa CT lại như vầy:Cảm ơn mọi người đã nhiệt tình chỉ giáo.
Mình có thêm thắc mắc như file đính kèm. Mong mọi người chỉ giáo thêm!
E7=IF(SUM(B7:B8)=2,B7,D7/SUM(OFFSET(D8,-MATCH(1,N(OFFSET(B8,-ROW($1:$100),)),),):OFFSET(D7,MATCH(1,B8:$B$25976,)-1,)))
Cho mình hỏi B25976 có cần điền số 1 không ạ?Bạn sửa CT lại như vầy:
Yêu cầu bấm CTrl+Shift+Enter rồi copy xuống!!!Mã:E7=IF(SUM(B7:B8)=2,B7,D7/SUM(OFFSET(D8,-MATCH(1,N(OFFSET(B8,-ROW($1:$100),)),),):OFFSET(D7,MATCH(1,B8:$B$25976,)-1,)))
p/s: chỗ ROW($1:$100) tôi đang cho dữ liệu bạn nhiều nhất có 100 ô rông liên tiếp nếu nhiều hơn bạn có thể sửa thành: ROW($1:$1000) hay ROW($1:$10000) hoặc ROW(INDIRECT("1:"&ROWS($B$7:B7))), càng nhiều thì công thức càng nặng.
Cần bạn hoặc sửa lại như vầy:Cho mình hỏi B25976 có cần điền số 1 không ạ?
=IF(SUM(B7:B8)=2,B7,D7/SUM(OFFSET(D8,-MATCH(1,N(OFFSET(B8,-ROW($1:$100),)),),):OFFSET(D7,IFERROR(MATCH(1,B8:$B$25976,)-1,100),)))
Cần bạn hoặc sửa lại như vầy:
Mã:=IF(SUM(B7:B8)=2,B7,D7/SUM(OFFSET(D8,-MATCH(1,N(OFFSET(B8,-ROW($1:$100),)),),):OFFSET(D7,IFERROR(MATCH(1,B8:$B$25976,)-1,100),)))