Cần giúp đỡ !Tìm giá trị lớn nhất của tổng 3 ngày và chỉ ra đó là ngày nào (1 người xem)

  • Thread starter Thread starter ibraa
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

ibraa

Thành viên mới
Tham gia
15/3/11
Bài viết
13
Được thích
0
View attachment 73128View attachment 73129View attachment 73128View attachment 73129Vấn đề của mình là cần tìm được lượng mưa lớn nhất trong 3 ngày liên tục trong nhiều năm và chỉ ra đó là những ngày nào trong năm. Mong các bạn giúp mình với
Số liệu và hình thức mẫu được mình làm bằng tay như mình gửi ở phía dưới
Thanks mọi người trước ^^
 

File đính kèm

Vấn đề của mình là cần tìm được lượng mưa lớn nhất trong 3 ngày liên tục trong nhiều năm và chỉ ra đó là những ngày nào trong năm. Mong các bạn giúp mình với
Số liệu và hình thức mẫu được mình làm bằng tay như mình gửi ở phía dưới
Thanks mọi người trước ^^
Lượng mưa lớn nhất từng năm và lớn nhất qua các năm đã rõ, nhưng lớn nhất 3 ngày liên tục xác định như thế nào? Có phải là xác định 3 ngày liên tục tính từ ngày có lượng mưa lớn nhất hay không? Vậy ô P93 = 133.5 được tính như thế nào?
 
P93= H105+H106+H107, cái đấy chỉ là lượng mưa lớn nhất trong 3 ngày liên tiếp của 1 năm thôi, mình làm được có mấy năm bằng tay nhưng mà toét hết cả mắt để tìm :(
 
P93= H105+H106+H107, cái đấy chỉ là lượng mưa lớn nhất trong 3 ngày liên tiếp của 1 năm thôi, mình làm được có mấy năm bằng tay nhưng mà toét hết cả mắt để tìm :(
Cái nầy chắc chỉ dùng hàm tự tạo thôi.
Xem thử hàm này,
Max3(Dòng đầu trong Vùng muốn tìm)
 

File đính kèm

Lần chỉnh sửa cuối:
Chen chưn với Ba Tê cái nha:

PHP:
Option Explicit
Function Max3Ngay(Dau As Long)
 Dim Tong As Double, jJ As Byte, Temp As Double, Ng As Byte, Thg As Byte
 Dim WF As Object, Rng As Range, Cls As Range
 
 Set WF = Application.WorksheetFunction
 For jJ = 2 To 13
   Set Rng = Cells(Dau, jJ).Resize(28).SpecialCells(xlCellTypeConstants, 1)
   For Each Cls In Rng
      Tong = WF.Sum(Cls.Resize(3))
      If Tong > Temp Then
         Temp = Tong:         Ng = Cells(Cls.Row, "A").Value
         Thg = jJ - 1
      End If
   Next Cls
 Next jJ
 Max3Ngay = Temp & ", Ngày " & Right("0" & CStr(Ng), 2) & "/" & Right("0" & CStr(Thg), 2)
End Function
 
Bài này có thể dùng công thức bình thường được đấy... Ví dụ để tính tổng lượng mưa 3 ngày lớn nhất trong vùng B4:M34 ta dùng công thức sau
PHP:
=MAX(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1)))
Công thức mảng, kết thúc bằng tổ hợp phím Ctrl + Shift + Enter
Có giá trị MAX rồi, tra ra ngày tháng hơi phức tạp chút nhưng không phải là không được... Ví dụ: Ta có giá trị MAX đặt tại cell P22, để tra ngày tháng, ta dùng cái này:
PHP:
=TEXT(MAX(IF(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1))=$P$22,1*(ROW($1:$29)&TEXT(COLUMN($A:$L),"00")),"")),"00""/""00")
Nếu dùng Name thì công thức sẽ gọn hơn
 

File đính kèm

Lần chỉnh sửa cuối:
mình cảm ơn tất cả mọi người đã giúp đỡ mình:D
Nhưng mà mình cung cấp thiếu thông tin cho mọi người. Sorry.... mưa 3 ngày max là tổng lượng mưa lớn nhất trong 3 ngày có mưa liên tiếp ( 2 ngày có mưa và 1 ngày ko có mưa thì cũng ko phải là giá trị mình cần tìm các bạn ak)
 
Lần chỉnh sửa cuối:
Nếu đây là công việc thường nhật của bạn thì bạn nên có trách nhiệm hơn với nó!

PHP:
Option Explicit
Function Max3Ngay(Dau As Long)
 Dim Tong As Double, jJ As Byte, Temp As Double, Ng As Byte, Thg As Byte
 Dim WF As Object, Rng As Range, Cls As Range
 
 Set WF = Application.WorksheetFunction
 For jJ = 2 To 13
   Set Rng = Cells(Dau, jJ).Resize(28).SpecialCells(xlCellTypeConstants, 1)
   For Each Cls In Rng
      If Cls.Offset(1).Value > 0 And Cls.Offset(2).Value > 0 And Cls.Value > 0 Then
         Tong = WF.Sum(Cls.Resize(3))
         If Tong > Temp Then
            Temp = Tong:         Ng = Cells(Cls.Row, "A").Value
            Thg = jJ - 1
         End If
      End If
   Next Cls
 Next jJ
 If Temp > 0 Then _
   Max3Ngay = Temp & ", Ngày " & Right("0" & CStr(Ng), 2) & "/" & Right("0" & CStr(Thg), 2)
End Function
 
mình cảm ơn tất cả mọi người đã giúp đỡ mình:D
Nhưng mà mình cung cấp thiếu thông tin cho mọi người. Sorry.... mưa 3 ngày max là tổng lượng mưa lớn nhất trong 3 ngày có mưa liên tiếp ( 2 ngày có mưa và 1 ngày ko có mưa thì cũng ko phải là giá trị mình cần tìm các bạn ak)
Tại bạn đưa kết quả không đúng vào file thôi
Sửa lại 1 tí:
PHP:
=MAX(IF(SUBTOTAL(2,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1))=3,SUBTOTAL(9,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1)),""))

PHP:
=TEXT(MAX(IF(IF(SUBTOTAL(2,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1))=3,SUBTOTAL(9,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1)),"")=$P$22,100*ROW($1:$29)+COLUMN($A:$L),"")),"00""/""00")
 

File đính kèm

Tại bạn đưa kết quả không đúng vào file thôi
Sửa lại 1 tí:
PHP:
=MAX(IF(SUBTOTAL(2,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1))=3,SUBTOTAL(9,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1)),""))

PHP:
=TEXT(MAX(IF(IF(SUBTOTAL(2,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1))=3,SUBTOTAL(9,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1)),"")=$P$22,100*ROW($1:$29)+COLUMN($A:$L),"")),"00""/""00")
bạn ơi! mình chạy thử thì thấy lượng mưa 3 ngày max là nằm ở cuối tháng này và đầu tháng kia(31/3+1/4+2/4) thì nó sẽ không ghi nhận kết quả này
 
Ờ hén, đúng là còn chuyện tháng nối tháng nữa

bạn ơi! mình chạy thử thì thấy lượng mưa 3 ngày max là nằm ở cuối tháng này và đầu tháng kia(31/3+1/4+2/4) thì nó sẽ không ghi nhận kết quả này

Hàm này nè bạn:

PHP:
Option Explicit
Function Max3Ngay(Dau As Long, Optional Nhuan As Byte = 0)
 Dim Tong As Double, jJ As Byte, Temp As Double
 Dim SoNg As Byte, Ng As Byte, Thg As Byte, Dem As Byte
 Dim WF As Object, Rng As Range, Cls As Range
 
 Set WF = Application.WorksheetFunction
 For jJ = 2 To 13
   SoNg = Choose(jJ - 1, 31, 28 + Nhuan, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
   Set Rng = Cells(Dau, jJ).Resize(SoNg).SpecialCells(xlCellTypeConstants, 1)
   Dem = 0
   For Each Cls In Rng
      Dem = Dem + 1
      If Dem < SoNg - 1 Then
         If Cls.Offset(1).Value > 0 And Cls.Offset(2).Value > 0 And Cls.Value > 0 Then
            Tong = WF.Sum(Cls.Resize(3))
            If Tong > Temp Then
               Temp = Tong:         Ng = Cells(Cls.Row, "A").Value
               Thg = jJ - 1
            End If
         End If
      ElseIf Dem = SoNg - 1 Then
         If Cls.Value > 0 And Cls.Offset(1).Value > 0 And Cells(Dau, jJ + 1).Value > 0 Then
            Tong = WF.Sum(Union(Cls.Resize(2), Cells(Dau, jJ + 1)))         '<=|'
            If Tong > Temp Then
               Temp = Tong:         Ng = Cells(Cls.Row, "A").Value
               Thg = jJ - 1
            End If
         End If
      ElseIf Dem = SoNg Then                                                               '
         If Cls.Value > 0 And Rng(1).Offset(1).Value > 0 And Rng(1).Offset(1, 1).Value > 0 Then
            Tong = WF.Sum(Union(Cls, Rng(1).Offset(, 1).Resize(2)))
            If Tong > Temp Then
               Temp = Tong:         Ng = Cells(Cls.Row, "A").Value
               Thg = jJ - 1
            End If
         End If
      End If
   Next Cls
 Next jJ
 If Temp > 0 Then _
   Max3Ngay = Temp & ", Ngày " & Right("0" & CStr(Ng), 2) & "/" & Right("0" & CStr(Thg), 2)
End Function
 
bạn ơi! mình chạy thử thì thấy lượng mưa 3 ngày max là nằm ở cuối tháng này và đầu tháng kia(31/3+1/4+2/4) thì nó sẽ không ghi nhận kết quả này
Nếu có yêu cầu kiểu này thì công thức xin thua, chỉ có thể lập trình thôi
Tặng bạn hàm này:
PHP:
Function Max3Ngay(NgayDau As Range, Nam As Long, kieu As Boolean)
  Dim tmpSumMax As Double, SumMax As Double
  Dim tmp1 As Double, tmp2 As Double, tmp3 As Double, lDay As Long
  Application.Volatile
  On Error Resume Next
  For lDay = DateSerial(Nam, 1, 1) To DateSerial(Nam, 12, 29)
    With NgayDau
      tmp1 = CDbl(.Offset(Day(lDay) - 1, Month(lDay) - 1))
      tmp2 = CDbl(.Offset(Day(lDay + 1) - 1, Month(lDay + 1) - 1))
      tmp3 = CDbl(.Offset(Day(lDay + 2) - 1, Month(lDay + 2) - 1))
    End With
    If tmp1 > 0 And tmp2 > 0 And tmp3 > 0 Then
      tmpSumMax = tmp1 + tmp2 + tmp3
      If tmpSumMax > SumMax Then
        SumMax = tmpSumMax
        Max3Ngay = IIf(kieu, lDay, SumMax)
      End If
    End If
  Next
End Function
Cú pháp = Max3Ngay(Ngày đầu tiên của vùng dữ liệu , Dữ liệu thuộc năm mấy, Kiểu xuất kết quả)
Ví dụ
=Max3Ngay(B4,1990,0) nghĩa là:
- Ngày đầu thuộc cell B4
- Năm cần tính là năm 1990
- Kết quả cần xuất là giá trị MAX

=Max3Ngay(B4,1990,1) nghĩa là:
- Ngày đầu thuộc cell B4
- Năm cần tính là năm 1990
- Kết quả cần xuất là giá trị Ngày tháng đạt giá trị MAX
 

File đính kèm

Lần chỉnh sửa cuối:
xin hỏi thêm bác ndu96081631 là muốn tìm max 5 ngày và 7 ngày mưa max thì đổi hàm như thế nào?
 
Bài này có thể dùng công thức bình thường được đấy... Ví dụ để tính tổng lượng mưa 3 ngày lớn nhất trong vùng B4:M34 ta dùng công thức sau
PHP:
=MAX(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1)))
Công thức mảng, kết thúc bằng tổ hợp phím Ctrl + Shift + Enter
Có giá trị MAX rồi, tra ra ngày tháng hơi phức tạp chút nhưng không phải là không được... Ví dụ: Ta có giá trị MAX đặt tại cell P22, để tra ngày tháng, ta dùng cái này:
PHP:
=TEXT(MAX(IF(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW($1:$29)-1,COLUMN($A:$L)-1,3,1))=$P$22,1*(ROW($1:$29)&TEXT(COLUMN($A:$L),"00")),"")),"00""/""00")
Nếu dùng Name thì công thức sẽ gọn hơn
Nhờ bác xác định hộ em tổng lượng mưa 5 ngày (7 ngày) lớn nhất với. Cám ơn bác
 
nhờ các bác giúp cách xác định tổng lượng mưa 5 ngày (7 ngày) liên tiếp có gí trị lớn nhất và ngày tháng xuất hiện
 

File đính kèm

nhờ các bác giúp cách xác định tổng lượng mưa 5 ngày (7 ngày) liên tiếp có gí trị lớn nhất và ngày tháng xuất hiện

Công thức MAX 3 ngày:
Mã:
=MAX(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW([COLOR=#ff0000][B]$1:$29[/B][/COLOR])-1,COLUMN($A:$L)-1,[B][COLOR=#ff0000]3[/COLOR][/B],1)))
Vậy MAX 5 ngày sẽ là: (công thức tại cell R22)
Mã:
=MAX(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW([COLOR=#ff0000][B]$1:$27[/B][/COLOR])-1,COLUMN($A:$L)-1,[B][COLOR=#ff0000]5[/COLOR][/B],1)))
Lấy ngày MAX (3 ngày):
Mã:
=TEXT(MAX(IF(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW([COLOR=#ff0000][B]$1:$29[/B][/COLOR])-1,COLUMN($A:$L)-1,[B][COLOR=#ff0000]3[/COLOR][/B],1))=[COLOR=#ff0000][B]$P$22[/B][/COLOR],1*(ROW([COLOR=#ff0000][B]$1:$29[/B][/COLOR])&TEXT(COLUMN($A:$L),"00")),"")),"00""/""00")
Vậy ngày MAX (5 ngày) là:
Mã:
=TEXT(MAX(IF(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW([COLOR=#ff0000][B]$1:$27[/B][/COLOR])-1,COLUMN($A:$L)-1,[COLOR=#ff0000][B]5[/B][/COLOR],1))=[COLOR=#ff0000][B]$R$22[/B][/COLOR],1*(ROW([COLOR=#ff0000][B]$1:$27[/B][/COLOR])&TEXT(COLUMN($A:$L),"00")),"")),"00""/""00")
Chổ màu đỏ là những cho phải sửa lại
Bạn tự suy ra cách tính MAX 7 ngày nhé
 
Lần chỉnh sửa cuối:
Công thức MAX 3 ngày:
Mã:
=MAX(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW([COLOR=#ff0000][B]$1:$29[/B][/COLOR])-1,COLUMN($A:$L)-1,[B][COLOR=#ff0000]3[/COLOR][/B],1)))
Vậy MAX 5 ngày sẽ là: (công thức tại cell R22)
Mã:
=MAX(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW([COLOR=#ff0000][B]$1:$27[/B][/COLOR])-1,COLUMN($A:$L)-1,[B][COLOR=#ff0000]5[/COLOR][/B],1)))
Lấy ngày MAX (3 ngày):
Mã:
=TEXT(MAX(IF(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW([COLOR=#ff0000][B]$1:$29[/B][/COLOR])-1,COLUMN($A:$L)-1,[B][COLOR=#ff0000]3[/COLOR][/B],1))=[COLOR=#ff0000][B]$P$22[/B][/COLOR],1*(ROW([COLOR=#ff0000][B]$1:$29[/B][/COLOR])&TEXT(COLUMN($A:$L),"00")),"")),"00""/""00")
Vậy ngày MAX (5 ngày) là:
Mã:
=TEXT(MAX(IF(SUBTOTAL(109,OFFSET($B$4:$M$34,ROW([COLOR=#ff0000][B]$1:$27[/B][/COLOR])-1,COLUMN($A:$L)-1,[COLOR=#ff0000][B]5[/B][/COLOR],1))=[COLOR=#ff0000][B]$R$22[/B][/COLOR],1*(ROW([COLOR=#ff0000][B]$1:$27[/B][/COLOR])&TEXT(COLUMN($A:$L),"00")),"")),"00""/""00")
Chổ màu đỏ là những cho phải sửa lại
Bạn tự suy ra cách tính MAX 7 ngày nhé
Rất rất cám ơn bác nhé, may nhờ có bác em làm kịp không teo em, em làm được rồi.
 
View attachment 73128View attachment 73129View attachment 73128View attachment 73129Vấn đề của mình là cần tìm được lượng mưa lớn nhất trong 3 ngày liên tục trong nhiều năm và chỉ ra đó là những ngày nào trong năm. Mong các bạn giúp mình với
Số liệu và hình thức mẫu được mình làm bằng tay như mình gửi ở phía dưới
Thanks mọi người trước ^^

Bài toán này nếu dùng hàm sẽ bị “gãy” trong các trường hợp sau :

  • Tổng lượng mưa lớn nhất rơi vào các ngày chuyển tiếp giữa các tháng
  • Có hơn 1 khoảng thời gian có tổng lượng mưa bằng với lượng mưa lớn nhất
Vì vậy, phải dùng giải pháp VBA để giải quyết các vấn đề này . Với hàm tự tạo này dễ dàng tìm được tổng lượng mưa lớn nhất trong một số ngày bất kỳ (<=31) đồng thời chỉ ra đó là những ngày nào . Mời bạn xem file đính kèm .
 

File đính kèm

Lần chỉnh sửa cuối:
Mến chào các anh chị,

Em đang gặp vấn đề khó trong việc tìm giá trị max có điều kiện của chuỗi mưa trong bảng theo file đính kèm.

Tìm lượng mưa của 1, 3, 5, 7 ngày max trong năm thứ i năm trong chuối mưa từ 1978-2013.

Trong đó lượng mưa 1, 3,5,7 ngày max được giải thích theo file đính kèm.

Nhờ anh chị giúp đỡ xử lý giúp em vấn đề này,

Cảm ơn các anh chị nhiều,
 

File đính kèm

Mến chào các anh chị,
Em đang gặp vấn đề khó trong việc tìm giá trị max có điều kiện của chuỗi mưa trong bảng theo file đính kèm.
Tìm lượng mưa của 1, 3, 5, 7 ngày max trong năm thứ i năm trong chuối mưa từ 1978-2013.
Trong đó lượng mưa 1, 3,5,7 ngày max được giải thích theo file đính kèm.
Nhờ anh chị giúp đỡ xử lý giúp em vấn đề này,
Cảm ơn các anh chị nhiều,

Bạn nên mở topic mới để mọi người dễ theo dõi và hỗ trợ bạn (topic này khá lâu rồi).
p/s: Bạn diễn giải thêm chỗ định nghĩa "3-5-7 ngày max"
X (3 ngay max): Là tổng lượng mưa của 3 ngày mưa lớn nhất liên tiếp trong năm thứ i (Hay là 3 ngày liên tiếp có tổng lượng mưa lớn nhất??)
 
Bạn nên mở topic mới để mọi người dễ theo dõi và hỗ trợ bạn (topic này khá lâu rồi).
p/s: Bạn diễn giải thêm chỗ định nghĩa "3-5-7 ngày max"
X (3 ngay max): Là tổng lượng mưa của 3 ngày mưa lớn nhất liên tiếp trong năm thứ i (Hay là 3 ngày liên tiếp có tổng lượng mưa lớn nhất??)

cột D là danh sách các năm , như vậy là chỉ tính tổng của 3 ngày lớn nhất theo từng năm rồi --=0--=0
 
Mến chào các anh chị,

Em đang gặp vấn đề khó trong việc tìm giá trị max có điều kiện của chuỗi mưa trong bảng theo file đính kèm.

Tìm lượng mưa của 1, 3, 5, 7 ngày max trong năm thứ i năm trong chuối mưa từ 1978-2013.

Trong đó lượng mưa 1, 3,5,7 ngày max được giải thích theo file đính kèm.

Nhờ anh chị giúp đỡ xử lý giúp em vấn đề này,

Cảm ơn các anh chị nhiều,
Bạn xem có đúng ý không nhé.

Tôi làm bằng công thức nên sẽ nặng file đó.
 

File đính kèm

có nên thử sức anh Tài nữa không ta ?
vẫn giữ cột phụ C
nói không với Cờn Trôn ship En tơ . hi hi

ƠN GIỜI ! ANH LẠI RA CÂU ĐỐ RỒI !
Hôm trước giải sai quá ... nên lần này hổng giám tham gia nữa đâu --=0. Lần này em ngồi xem các cao thủ biểu diễn thôi...:-=
 
có nên thử sức anh Tài nữa không ta ?
vẫn giữ cột phụ C
nói không với Cờn Trôn ship En tơ . hi hi
Tôi không tên Tài bạn ah.
Mã:
=MAX(INDEX(($C$1:$C$13148=$D2)*SUBTOTAL(9,OFFSET($B$1,ROW(INDIRECT("1:"&ROWS($C$1:$C$13148))),0,(COLUMN(A1)-1)*2+1)),0))

Không biết bạn có đáp án như thế nào để mọi người học hỏi?
 
có nên thử sức anh Tài nữa không ta ?
vẫn giữ cột phụ C
nói không với Cờn Trôn ship En tơ . hi hi
Một công thức nữa nhé, không phụ, không biết đáp án của bạn như thế nào nhỉ, tôi cũng tò mò muốn biết.
Mã:
=MAX(INDEX((--MID($A$1:$A$13148,6,4)=$D2)*SUBTOTAL(9,OFFSET($B$1,ROW(INDIRECT("1:"&ROWS($B$1:$B$13148))),0,(COLUMN(A1)-1)*2+1)),0))
 
Một công thức nữa nhé, không phụ, không biết đáp án của bạn như thế nào nhỉ, tôi cũng tò mò muốn biết.
Mã:
=MAX(INDEX((--MID($A$1:$A$13148,6,4)=$D2)*SUBTOTAL(9,OFFSET($B$1,ROW(INDIRECT("1:"&ROWS($B$1:$B$13148))),0,(COLUMN(A1)-1)*2+1)),0))

rất tiếc là lần này bạn làm quá hay , mình hổng có đáp án hay hơn để đưa , thông cảm cho mình được hông bản ?
mình chỉ xin nhắc bạn nhớ cẩn thận 1 chút , bằng cách bạn sửa B1 thành 500 rồi xem lại kết quả nhé , cám ơn bạn đã nhiệt tình tham gia . hi hi
 
rất tiếc là lần này bạn làm quá hay , mình hổng có đáp án hay hơn để đưa , thông cảm cho mình được hông bản ?
mình chỉ xin nhắc bạn nhớ cẩn thận 1 chút , bằng cách bạn sửa B1 thành 500 rồi xem lại kết quả nhé , cám ơn bạn đã nhiệt tình tham gia . hi hi
Cảm ơn bạn đã nhắc.

Dựa trên lời nhắc của bạn Chim Hồng chủ topic chú ý: Thêm dòng tiêu đề cho dữ liệu, dữ liệu từ dòng thứ 2 với các công thức bên trên.

Làm vui mà bạn Hồng Chim có gì mà phải thông cảm bạn :).
 
Cảm ơn bạn đã nhắc.

Dựa trên lời nhắc của bạn Chim Hồng chủ topic chú ý: Thêm dòng tiêu đề cho dữ liệu, dữ liệu từ dòng thứ 2 với các công thức bên trên.

Làm vui mà bạn Hồng Chim có gì mà phải thông cảm bạn :).

ủa đâu phải , thích xôi cho ăn xôi chứ , chỉnh công thức tí thôi mà . hi hi
Mã:
=MAX(INDEX( SUBTOTAL(9,OFFSET($B$1,ROW($1:$15000)-1,,COLUMN(A1)*2-1))*($C$1:$C$15000=$D2),0))
 
Ha ha. Còn cao thủ nào chưa xuất chiêu thì hãy ra tay nốt đi cho em mở mang với. Cảm ơn anh Chim Hồng- trưởng ban tổ chức của đại hội võ lâm cao thủ ...--=0--=0--=0
 
Ha ha. Còn cao thủ nào chưa xuất chiêu thì hãy ra tay nốt đi cho em mở mang với. Cảm ơn anh Chim Hồng- trưởng ban tổ chức của đại hội võ lâm cao thủ ...--=0--=0--=0
không đơn giản như Phong đệ thấy đâu , cái khúc cua này mới hấp dẫn nè
Sửa ô B366 ( có A366 = 01Jan1979, 00:00) thành 500 là các công thức ở trên ra đảo hết .
hơn thua nhau là ở cái khúc này nè , không biết có ai hiểu không ?
 
không đơn giản như Phong đệ thấy đâu , cái khúc cua này mới hấp dẫn nè
Sửa ô B366 ( có A366 = 01Jan1979, 00:00) thành 500 là các công thức ở trên ra đảo hết .
hơn thua nhau là ở cái khúc này nè , không biết có ai hiểu không ?
Đúng là bạn Hồng Chim nhìn nhận vấn đề tổng quan. Chờ bạn Chim Hồng giải quyết vụ này cho gọn.

Bạn thật là giỏi trên nhiều lĩnh vực qua các bài trên GPE. Quả là: Vừa Hồng vừa Chim (quên vừa Chuyên) /-*+/ (Vui chút nha)
 
Đúng là bạn Hồng Chim nhìn nhận vấn đề tổng quan. Chờ bạn Chim Hồng giải quyết vụ này cho gọn.

Bạn thật là giỏi trên nhiều lĩnh vực qua các bài trên GPE. Quả là: Vừa Hồng vừa Chim (quên vừa Chuyên) /-*+/ (Vui chút nha)

mình dốt công thức lắm nha bạn , gần đây mới luyện thử để giết thời gian thôi
ở đây ta phải dùng Logic học 1 tí , có nghĩa là phải chơi trò "ngó đằng trước suy ra đằng sau"
ô E2 vẫn là
Mã:
=MAX(INDEX( SUBTOTAL(9,OFFSET($B$1,ROW($1:$15000)-1,,COLUMN(A1)*2-1))*($C$1:$C$15000=$D2),0))
Nhưng qua F2 lại là
Mã:
=MAX(INDEX( SUBTOTAL(9,OFFSET($B$1,ROW($1:$15000)-1,,COLUMN(B1)*2-1))*([COLOR=#ff0000][SIZE=4][B]$C$3:$C$15002[/B][/SIZE][/COLOR]=$D2)*($C$1:$C$15000=$D2),0))

qua G2 lại là
Mã:
=MAX(INDEX( SUBTOTAL(9,OFFSET($B$1,ROW($1:$15000)-1,,COLUMN(C1)*2-1))*([SIZE=4][COLOR=#ff0000][B]$C$5:$C$15004[/B][/COLOR][/SIZE]=$D2)*($C$1:$C$15000=$D2),0))

H2
Mã:
=MAX(INDEX( SUBTOTAL(9,OFFSET($B$1,ROW($1:$15000)-1,,COLUMN(D1)*2-1))*($C$1:$C$15000=$D2)*([SIZE=4][COLOR=#ff0000][B]$C$7:$C$15006[/B][/COLOR][/SIZE]=$D2),0))
 
Lần chỉnh sửa cuối:
không đơn giản như Phong đệ thấy đâu , cái khúc cua này mới hấp dẫn nè
Sửa ô B366 ( có A366 = 01Jan1979, 00:00) thành 500 là các công thức ở trên ra đảo hết .
hơn thua nhau là ở cái khúc này nè , không biết có ai hiểu không ?

Sửa lại thành thế này phải không anh
Mã:
=MAX(INDEX(($C$1:$C$13148=$D2)*SUBTOTAL(9,OFFSET($B$1,ROW(INDIRECT("1:"&ROWS($C$1:$C$13148)))[COLOR=#ff0000][B]-1[/B][/COLOR],0,(COLUMN(A1)-1)*2+1)),0))
 
mình dốt công thức lắm nha bạn , gần đây mới luyện thử để giết thời gian thôi
ở đây ta phải dùng Logic học 1 tí , có nghĩa là phải chơi trò "ngó đằng trước suy ra đằng sau"
ô E2 vẫn là
Mã:
=MAX(INDEX( SUBTOTAL(9,OFFSET($B$1,ROW($1:$15000)-1,,COLUMN(A1)*2-1))*($C$1:$C$15000=$D2),0))
Nhưng qua F2 lại là
Mã:
=MAX(INDEX( SUBTOTAL(9,OFFSET($B$1,ROW($1:$15000)-1,,COLUMN(B1)*2-1))*([COLOR=#ff0000][SIZE=4][B]$C$3:$C$15002[/B][/SIZE][/COLOR]=$D2)*($C$1:$C$15000=$D2),0))

qua G2 lại là
Mã:
=MAX(INDEX( SUBTOTAL(9,OFFSET($B$1,ROW($1:$15000)-1,,COLUMN(C1)*2-1))*([SIZE=4][COLOR=#ff0000][B]$C$5:$C$15004[/B][/COLOR][/SIZE]=$D2)*($C$1:$C$15000=$D2),0))

H2
Mã:
=MAX(INDEX( SUBTOTAL(9,OFFSET($B$1,ROW($1:$15000)-1,,COLUMN(D1)*2-1))*($C$1:$C$15000=$D2)*([SIZE=4][COLOR=#ff0000][B]$C$7:$C$15006[/B][/COLOR][/SIZE]=$D2),0))

như thế này mỗi cột một công thức, nếu thế thì nên thay phần
COLUMN(A1)*2-1
thành con số cụ thể 1 3 5 7

Tuy thế, tất cả công thức ở các bài trên chúng ta đều phải tính subtotal cho tất cả vùng dữ liệu to, có cách nào chúng ta chỉ subtotal trên vùng dữ liệu của năm đang tính (ví dụ 1978: từ row 1:365, 1979: row 366:730) không? khi đó tốc độ tính toán của sheet tăng lên. Công thức có thể dài hơn nhưng nhẹ hơn? và có thể chỉ 1 công thức duy nhất cho cả 4 cột?
(ở đây cột phụ C nên giữ lại - vì đó là điều nên làm cho hợp lý và công thức rõ ràng hơn.)
 
Lần chỉnh sửa cuối:
như thế này mỗi cột một công thức, nếu thế thì nên thay phần
COLUMN(A1)*2-1
thành con số cụ thể 1 3 5 7

Tuy thế, tất cả công thức trên chúng ta đều phải tính subtotal cho tất cả vùng dữ liệu to, có cách nào chúng ta chỉ subtotal trên vùng dữ liệu của năm đang tính (ví dụ 1978: từ row 1:365, 1979: row 366:730) không? khi đó tốc độ tính toán của sheet tăng lên. Công thức có thể dài hơn nhưng nhẹ hơn? và có thể chỉ 1 công thức duy nhất cho cả 4 cột?
(ở đây cột phụ C nên giữ lại - vì đó là điều nên làm cho hợp lý và công thức rõ ràng hơn.)

trong khả năng của tôi chỉ làm được đến đó , nếu bạn có cách hay thì cứ vào đây nhậu , để mọi người học tập , chứ bạn có diễn tả tới sáng mai tôi cũng đâu hiểu bạn nói gì .
 
trong khả năng của tôi chỉ làm được đến đó , nếu bạn có cách hay thì cứ vào đây nhậu , để mọi người học tập , chứ bạn có diễn tả tới sáng mai tôi cũng đâu hiểu bạn nói gì .

Đợi chút, tôi đang hoàn thành, và cũng để các bạn khác cùng suy nghĩ xem có hướng giải quyết không?
Mục đích là tạo ra công thức đúng và nhanh hơn (không cần phải subtotal toàn bộ hơn 13000 dòng, khi mà 1 năm có 365 dòng)
 
Cảm ơn các anh chị trong diễn đàn rất nhiều, đặc biệt là anh (chị) DHN6,

Đây là diễn đàn rất hữu ích, giúp những anh chị em mới tiếp cận với Advanced Excel như em giải quyết nhiều vấn đề thực tế rất khó.

Không biết anh chị có mở lớp học không ạ (có thể dạng lớp học Online) em thấy rất cần thiết!

Ngoài ra, anh chị cho em hỏi, đối với vấn đề của em anh chị (DHN46) và các anh chị trong diễn đàn đã xử lý rất tốt nhưng em muốn xác định dữ liệu NGÀY THÁNG NĂM có giá trị mưa tương ứng với 1 ngày max, 3 ngày max, 5 ngày max, 7 ngày max có được không ạ?
Anh chị xem giùm em cái file đính kèm nhé,

Cảm ơn anh chị rất nhiều ạ,

 

File đính kèm

Cảm ơn các anh chị trong diễn đàn rất nhiều, đặc biệt là anh (chị) DHN6,

Đây là diễn đàn rất hữu ích, giúp những anh chị em mới tiếp cận với Advanced Excel như em giải quyết nhiều vấn đề thực tế rất khó.

Không biết anh chị có mở lớp học không ạ (có thể dạng lớp học Online) em thấy rất cần thiết!

Ngoài ra, anh chị cho em hỏi, đối với vấn đề của em anh chị (DHN46) và các anh chị trong diễn đàn đã xử lý rất tốt nhưng em muốn xác định dữ liệu NGÀY THÁNG NĂM có giá trị mưa tương ứng với 1 ngày max, 3 ngày max, 5 ngày max, 7 ngày max có được không ạ?
Anh chị xem giùm em cái file đính kèm nhé,

Cảm ơn anh chị rất nhiều ạ,


nếu cần tìm cả NGÀY THÁNG NĂM tương ứng thì khó làm bằng công thức rui, bạn nên chuyển sang VBA vừa nhanh gọn và nhẹ.
 
nếu cần tìm cả NGÀY THÁNG NĂM tương ứng thì khó làm bằng công thức rui, bạn nên chuyển sang VBA vừa nhanh gọn và nhẹ.

ủa công thức Subtotal cho 365 ngày đâu bạn ? kể cả là tính Max hay chỉ ra ngày Max đều làm bằng công thức theo hướng Subtotal 365 ngày cả , nhưng tôi ngại đưa lên , vì bạn có nói là đang hoàn thiện , chuẩn bị gửi công thức lên ,nếu tôi đưa lên trước thì rõ ràng là đã cư xử không đẹp với bạn , tôi đang chờ học công thức của bạn .
 
ủa công thức Subtotal cho 365 ngày đâu bạn ? kể cả là tính Max hay chỉ ra ngày Max đều làm bằng công thức theo hướng Subtotal 365 ngày cả , nhưng tôi ngại đưa lên , vì bạn có nói là đang hoàn thiện , chuẩn bị gửi công thức lên ,nếu tôi đưa lên trước thì rõ ràng là đã cư xử không đẹp với bạn , tôi đang chờ học công thức của bạn .

Làm xong rui thì cứ mạnh dạn đưa lên có chi phải áy này mà đẹp với không đẹp, tôi đưa ý tưởng công thức thế cho nó nhẹ tính toán. Còn Lợi ích thực là cho người hỏi,

Tôi đã làm xong tối qua, nhưng muộn ngủ lun, sáng thấy chủ topic lại thêm y.c ngày, bảng kết quả bố trí khác

Công thức đây , áp dụng cho ô E2 file như của Dhn46 bài #23
Mã:
=MAX(INDEX(SUBTOTAL(9,OFFSET($B$1,ROW(OFFSET($C$1,MATCH($D2,$C$1:$C$13148,0)-1,):OFFSET($C$1,LOOKUP($D2,$C$1:$C$13148,ROW($C$1:$C$13148)-ROW($C$1))-2*(COLUMN(A:A)-1),))-1,,(COLUMN(A:A)-1)*2+1)),0))
, copy cho các cột dòng còn lại của E F G H
còn vụ ngày tháng năm, sáng nay mới thấy nên chưa nghĩ gì .
 

Bài viết mới nhất

Back
Top Bottom