black_coffee
Thành viên mới

- Tham gia
- 22/6/11
- Bài viết
- 24
- Được thích
- 0
chào mọi người . Do chủ đề trước bị khóa vì đặt tiêu đề chung chung nên e mạn phép xin dc bắt đầu lại chủ đề với tiêu đề cụ thể hơn . Xin trích lại 1 phần chủ đề trc và đã có 1 số pro như Hau151978 và Let'GâuGâu tham gia nhưng chưa đi đến cuối cùng thì bị khóa .
cthức
với
màu xanh là vùng dữ liệu
mà đỏ là số ngày
muốn xuất số liệu thì "so"
muốn xuất ngày thì "N"[/INDENT]
[*]28-09-14, 01:47 PM
Hau151978
[*]28-09-14, 01:52 PM
black_coffee[/LIST]
[/CODE]
Mã:
[LIST]
[*]black_coffee
2 Attachment(s)
Xin nhờ giúp đỡ về chuỗi số liệu sau[INDENT]chào a chị e trên 4rum hiện e có 1 vấn đề hơi khó về excel đó là tìm ra các số max liên tiếp trong các ngày và tháng. Cụ thể ở đây là tìm ra trong các trận mưa trong 1 năm. những trận nào có lượng mưa lớn nhất trong năm. gồm : 2 trận mưa liên tiếp lớn nhất, 3 trận mưa liên tiếp lớn nhất. 5 trận mưa liên tiếp lớn nhất. ( Tính cả trường hợp trận mưa ở ngày 30 31 của tháng này nếu có và tiếp đến là ngày mùng 1 mùng 2 mùng 3 của tháng kế tiếp nếu có mưa và là trận mưa lớn nhất. ) Vậy có cách gì hay phân mềm nào đó trong excel có thể tìm ra nhanh chóng các trận mưa lớn nhất trong 2 ngày max 3 ngày max và 5 ngày max này ko ạ. Chứ ngồi nhìn nhìn dò dò cái mớ này với khooảng vài chục năm thì e chết mất @@ . e gửi các pro 1 bảng excel số liệu và kết quả mẫu e dò bằng mắt cho các bác dễ hiểu. mong mọi người giúp đỡ. THanks all e cũng đang cần gấp :([/INDENT]
[*]27-09-14, 08:29 PM
minhtungph[INDENT]không hiểu ý bạn hỏi sao luôn,ngày 17/7 lượng mưa chỉ 5.3 sao lại đưa vô phần 5 ngày max, cái này bạn ví dụ hay dòng nào gần lượng mưa max trong tháng thì lấy[/INDENT]
[*]27-09-14, 09:18 PM
black_coffee
1 Attachment(s)[INDENT][quote="minhtungph, post: 608565"]không hiểu ý bạn hỏi sao luôn,ngày 17/7 lượng mưa chỉ 5.3 sao lại đưa vô phần 5 ngày max, cái này bạn ví dụ hay dòng nào gần lượng mưa max trong tháng thì lấy[/QUOTE]
à vấn đề là chỗ này đây ạ. lượng mưa 2 ngày 3 ngày hoặc 5 ngày phải là những ngày liên tục có mưa. và có tổng lượng mưa lớn nhất. bảng số liệu trên e bị sai :( e xin up lại file này mới đúng e se up lai ca tren #1 các bác down bản : so lieu sua.xls giúp e nhe )
Ví dụ như bảng số liệu mới này : 2 ngày mưa max là ngày 29 và 30 của tháng 7 ( phải là 2 ngày mưa liên tục cạnh nhau) là 248 va 83,4 cộng lại 331,4 số 331,4 này phải là tổng lớn nhất. và không có 2 ngày mưa nào liên tục cộng lại lớn hơn 2 ngày này. Tương tự như vậy cho 3 ngày và 5 ngày max. Ở đây 5 ngày max thì lại rơi vào tháng 8 các ngày 15, 16 ,17 ,18 ,19 vì chỉ có 5 ngày mưa liên tục này trong năm cộng lại có tổng lớn nhất là 300,7 . Lưu ý phải là các ngày mưa liên tục ko ngắt quãng. :D MOng các pro giúp đỡ :D[/INDENT]
[*]28-09-14, 10:03 AM
black_coffee[INDENT]ồ không có ai giup mình sao :([/INDENT]
[*]28-09-14, 10:11 AM
Let'GâuGâu[INDENT][quote="black_coffee, post: 608608"]ồ không có ai giup mình sao :([/QUOTE]
làm bằng vba nha, hàm tôi nghĩ nát óc từ tối đến giờ vẫn chưa ra
cho họỏi thêm cái này
trường hợp các ngày mưa liên tiêp rơi vào cuối tháng này đâu tháng kia thì có tính ko? ví dụ 30 tháng 1, rồi 2,3 tháng 2
hay chỉ tính trong từng tháng?
===========
bạn tham khảo link sau, xem có sài được ko
[URL]http://www.giaiphapexcel.com/forum/showthread.php?56913-C%E1%BA%A7n-gi%C3%BAp-%C4%91%E1%BB%A1-!T%C3%ACm-gi%C3%A1-tr%E1%BB%8B-l%E1%BB%9Bn-nh%E1%BA%A5t-c%E1%BB%A7a-t%E1%BB%95ng-3-ng%C3%A0y-v%C3%A0-ch%E1%BB%89-ra-%C4%91%C3%B3-l%C3%A0-ng%C3%A0y-n%C3%A0o[/URL]
hoặc gõ từ khoá "ngay mua lien tiep nhieu nhat" vào cái ô tìm kiếm tìn xem[/INDENT]
[*]28-09-14, 10:36 AM
Hau151978[INDENT][quote="black_coffee, post: 608571"]à vấn đề là chỗ này đây ạ. lượng mưa 2 ngày 3 ngày hoặc 5 ngày phải là những ngày liên tục có mưa. và có tổng lượng mưa lớn nhất. bảng số liệu trên e bị sai :( e xin up lại file này mới đúng e se up lai ca tren #1 các bác down bản : so lieu sua.xls giúp e nhe )
Ví dụ như bảng số liệu mới này : 2 ngày mưa max là ngày 29 và 30 của tháng 7 ( phải là 2 ngày mưa liên tục cạnh nhau) là 248 va 83,4 cộng lại 331,4 số 331,4 này phải là tổng lớn nhất. và không có 2 ngày mưa nào liên tục cộng lại lớn hơn 2 ngày này. Tương tự như vậy cho 3 ngày và 5 ngày max. Ở đây 5 ngày max thì lại rơi vào tháng 8 các ngày 15, 16 ,17 ,18 ,19 vì chỉ có 5 ngày mưa liên tục này trong năm cộng lại có tổng lớn nhất là 300,7 . Lưu ý phải là các ngày mưa liên tục ko ngắt quãng. :D MOng các pro giúp đỡ :D[/QUOTE]
Bài này bạn có thể dùng thêm cột phụ cho nhanh, ví dụ dữ liệu năm 2013. S1=1/1/2013, fill xuống S365=31/12/2013. Công thức ở T1 là =OFFSET($A$1,DAY(S1),MONTH(S1)) fill xuống. Công thức U1=(T1+T2)*(T1*T2>0) fill xuống. Dùng auto fighter ở cột U, kéo xuống dòng dưới cùng sẽ thấy Max=331.4 và ngày 29/8/2013. Nếu tính 5 ngày thì sửa công thức ở cột U.[/INDENT]
[*]28-09-14, 11:43 AM
Let'GâuGâu
1 Attachment(s)[INDENT][quote="black_coffee, post: 608608"]ồ không có ai giup mình sao :([/QUOTE]
chờ bạn trả lời sao lâu quá, thui làm luôn
hàm tự tạo, nếu excel 2003 thì vào Tool==>macro==>security==>hạ xuống mức low hoặc Med
exxcel 2007 thì khi mở file nhớ "enable macro"
[code]
Function Max_NgMuaLienTiep(rng As Range, n As Byte, kieu As String, stt As Byte)
Dim SoLieu As Variant, tam(), kq(), i, j, k, T_tam, T_kq As Long
SoLieu = rng.Value
ReDim tam(1 To UBound(SoLieu, 2) * UBound(SoLieu), 1 To 2)
For i = 1 To UBound(SoLieu, 2)
For j = 1 To UBound(SoLieu)
k = k + 1
tam(k, 1) = SoLieu(j, i)
tam(k, 2) = Format(i & "/" & j, "dd/mm")
Next j
Next i
ReDim kq(1 To n, 1 To 2)
For i = 1 To UBound(tam) - n
T_tam = 0
For j = 0 To n - 1
If tam(i + j, 1) = 0 Then GoTo thoatvonglap
T_tam = T_tam + tam(i + j, 1)
Next j
If T_tam > T_kq Then
T_kq = 0
For j = 1 To n
kq(j, 1) = tam(i + j - 1, 1)
T_kq = T_kq + kq(j, 1)
kq(j, 2) = tam(i + j - 1, 2)
Next j
End If
thoatvonglap:
Next i
If UCase(kieu) = "SO" Then no = 1
If UCase(kieu) = "N" Then no = 2
Max_NgMuaLienTiep = kq(stt, no)
Erase SoLieu, tam, kq
End Function
cthức
Mã:
=Max_NgMuaLienTiep([COLOR=#0000cd]$B$2:$M$32[/COLOR],[COLOR=#ff0000]5[/COLOR],"SO",ROW(1:1))
màu xanh là vùng dữ liệu
mà đỏ là số ngày
muốn xuất số liệu thì "so"
muốn xuất ngày thì "N"[/INDENT]
[*]28-09-14, 01:47 PM
Hau151978
Hàm của bác Let's Gâu có vấn đề: ví dụ max tổng 2 ngày liên tiếp khi chọn kiểu số chỉ ra kết quả là ô đầu tiên (=248), đáng lẽ kết quả phải là tổng 2 ô (= 248 + 83.4 = 331.4). Vấn đề nữa là bác coi lượng mưa ngày 31 của các tháng có <31 ngày bằng 0 nên kết quả sẽ không chính xác. Ví dụ lượng mưa các ngày 29/4 là 0, 30/4 là 1000, 1/4 là 1, các ngày khác như đề bài thì hàm của bác sẽ không tìm được kết quả là 1001 do vẫn coi ngày 31/4 là 0.
Em cũng thử làm tí VBA: tính max tổng 2 ngày mưa liên tiếp điền vào ô V1 và liệt kê tất cả các ngày phù hợp (có thể xảy ra trường hợp nhiều cặp ngày thỏa mãn điều kiện, khi đó Sub sẽ điền ngày đầu trong các cặp ngày đó vào ô từ V2 trở đi). Thủ tục cần nhập số năm để xác định xem ngày cuối cùng tháng 2 là 28 hay 29.
Em cũng thử làm tí VBA: tính max tổng 2 ngày mưa liên tiếp điền vào ô V1 và liệt kê tất cả các ngày phù hợp (có thể xảy ra trường hợp nhiều cặp ngày thỏa mãn điều kiện, khi đó Sub sẽ điền ngày đầu trong các cặp ngày đó vào ô từ V2 trở đi). Thủ tục cần nhập số năm để xác định xem ngày cuối cùng tháng 2 là 28 hay 29.
Mã:
Sub a()
Dim arr(), arr1(1 To 365) As Double, LN As Double, d As Long, i As Long, k As Long, n As Long, m As Date
n = InputBox("Year?")
arr = Range("B2:M32").Value
d = DateSerial(n + 1, 1, 1) - DateSerial(n, 1, 1)
LN = 0
For i = 1 To d - 1
m = DateSerial(n, 1, 1) + i - 1
If arr(Day(m), Month(m)) * arr(Day(m + 1), Month(m + 1)) > 0 And arr(Day(m), Month(m)) + arr(Day(m + 1), Month(m + 1)) > LN Then
LN = arr(Day(m), Month(m)) + arr(Day(m + 1), Month(m + 1))
arr1(i) = LN
Else
arr1(i) = 0
End If
Next
[V1] = LN
k = 2
For i = 1 To d - 1
If arr1(i) = LN Then
Range("V" & k) = DateSerial(n, 1, 1) + i - 1
k = k + 1
End If
Next
End Sub
[*]28-09-14, 01:52 PM
black_coffee
CÓ bác ạ th ngày mưa rơi từ cuối tháng này liên tiếp sang đầu tháng kia vẫn tínhlàm bằng vba nha, hàm tôi nghĩ nát óc từ tối đến giờ vẫn chưa ra
cho họỏi thêm cái này
trường hợp các ngày mưa liên tiêp rơi vào cuối tháng này đâu tháng kia thì có tính ko? ví dụ 30 tháng 1, rồi 2,3 tháng 2
hay chỉ tính trong từng tháng?
===========
bạn tham khảo link sau, xem có sài được ko
http://www.giaiphapexcel.com/forum/...nhất-của-tổng-3-ngày-và-chỉ-ra-đó-là-ngày-nào
hoặc gõ từ khoá "ngay mua lien tiep nhieu nhat" vào cái ô tìm kiếm tìn xem
[/CODE]
Lần chỉnh sửa cuối:

