Tính ngày trong tháng không có trong một cột!

  • Thread starter totalsolution
  • Ngày gửi
T

totalsolution

Guest
27/2/07
1
0
0
41
HCM
Em có một cột những ngày như sau:
A
2/10/2006
2/10/2006
2/10/2006
3/10/2006
3/10/2006
3/10/2006
4/10/2006
4/10/2006
5/10/2006
5/10/2006
5/10/2006
6/10/2006
6/10/2006
9/10/2006
9/10/2006
10/10/2006
10/10/2006
11/10/2006
11/10/2006
12/10/2006

Dùng hàm nào để tính ra những ngày không có trong cột này. Mà không phải đếm thủ công, em đếm mỏi tay quá rùi.hix, và đưa ra tổng những ngày không có trong cột
Em đang cần rất gấp. Các Bác giúp em nhé, em sẽ hậu tạ!!!!
 
Khóa học Quản trị dòng tiền
F

farway72

Guest
22/12/05
53
0
0
52
HN
Bạn dùng thêm cột phụ để lấy ngày riêng của từng ô. Nhưng mình không hiểu, bạn nói : "đưa ra tổng những ngày không có trong cột" nghĩa là tỉnh tổng lại những ngày ko có trong cột hay là đưa ra tất cả những ngày còn lại ko có trong cột ? . Mục đích của việc làm này là gì vậy ?
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Tôi đề xuất một cách làm như sau:
1. Tính số ngày từ ngày đầu đến ngày cuối cùng của nhóm ngày đó. Cái này thì dể vì chỉ cần lấy ngày lớn nhất trừ đi ngày nhỏ nhất cộng thêm 1
2. Tính số ngày (phần tử) duy nhất trong cột đó. Ví dụ trong dãy số trên thì có chỉ có vài phần tử duy nhất là ngày 2, 3,4,5,6,9,10,11,12 = 9 phần tử. Để làm tính được cái này thì công thức hơi phức tạp một tí dùng công thức mảng {=SUM(1/(COUNTIF(A1:A20,A1:A20)))}. Ví dụ trở trên là cột giá trị từ ô A1 đến A20
 
N

Ng Ha Anh Tuan

Guest
2/8/06
76
0
0
TP HCM
Bạn muốn tìm những ngày không có trong cột này A so với cột nào, ví dụ là so với cột B từ 02/10/2006, 03/10/2006...12/10/2006. Bạn dùng C1= countif(A1:A20,B1)
nếu cell nào = 0 thì ngày đó không có
 
hieu1563

hieu1563

Guest
Dùng hàm nào để tính ra những ngày không có trong cột này. Mà không phải đếm thủ công, em đếm mỏi tay quá rùi.hix, và đưa ra tổng những ngày không có trong cột
Em đang cần rất gấp. Các Bác giúp em nhé, em sẽ hậu tạ!!!!

Không có hàm nào mà lại tính ra được nhiều ngày em ạ. Chỉ tính ra được 1 ngày thôi.

Bình_OverAC nói:
Tôi đề xuất một cách làm như sau:
1. Tính số ngày từ ngày đầu đến ngày cuối cùng của nhóm ngày đó. Cái này thì dể vì chỉ cần lấy ngày lớn nhất trừ đi ngày nhỏ nhất cộng thêm 1
2. Tính số ngày (phần tử) duy nhất trong cột đó. Ví dụ trong dãy số trên thì có chỉ có vài phần tử duy nhất là ngày 2, 3,4,5,6,9,10,11,12 = 9 phần tử. Để làm tính được cái này thì công thức hơi phức tạp một tí dùng công thức mảng {=SUM(1/(COUNTIF(A1:A20,A1:A20)))}. Ví dụ trở trên là cột giá trị từ ô A1 đến A20

Cách này rất hay, tuy nhiên cũng mới chỉ tính ra được số ngày không có (hoặc có) trong cột mà lại không chỉ ra ngày cụ thể nào.

Theo mình nghĩ có lẽ có 2 cách :

C1 : Dùng bảng (hoặc cột) phụ
C2 : Dùng VBA


Thân!
 
HongViet

HongViet

Cao cấp
10/11/05
286
10
18
Đà nẵng
Không có hàm nào mà lại tính ra được nhiều ngày em ạ. Chỉ tính ra được 1 ngày thôi.
Có đó Hiếu ơi: Hàm mảng tự tạo (sẽ đề cập đến nếu ai đó có iêu cầu!
Cách này rất hay, tuy nhiên cũng mới chỉ tính ra được số ngày không có (hoặc có) trong cột mà lại không chỉ ra ngày cụ thể nào.Theo mình nghĩ có lẽ có 2 cách :C1 : Dùng bảng (hoặc cột) phụ
C2 : Dùng VBA Thân!

Mình sẽ cụ thể cách 2 của Hiếu đây:
Option Explicit
Sub TimNgay()

Dim Dat As Date, Rng As Range, Clls As Range
Dim iJ As Long, iZ As Integer, iW As Integer
Application.ScreenUpdating = False
Set Rng = Columns("F:F")
'Cột 'F' chứa DSách các ngày
Rng.Sort Key1:=Range("F2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Set Rng = Range("F2:F" & Range("f65432").End(xlUp).Row)
For Each Clls In Rng
iJ = 1 + iJ
If iJ = 1 Then
Dat = Clls.Value
Else
If Clls.Value > Dat + 1 Then
iZ = Clls.Value - Dat - 1
For iW = 1 To iZ
'Cột G sẽ liệt kê ~ ngày chưa có trong DSách tại cột 'F' nêu trên
Range("G" & Range("G65432").End(xlUp).Row + 1).Value = Dat + iW
Next iW
End If
Dat = Clls.Value
End If
Next Clls
Application.ScreenUpdating = True
End Sub
 

Xem nhiều

Webketoan Zalo OA