Custom Format cells với dữ liệu ngày tháng ? (1 người xem)

Liên hệ QC

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

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,470
Nghề nghiệp
Công chức
Mình muốn tạo một cột ngày trong tháng để phục vụ cho một số công việc.
Vd: khi chọn tháng 1 thì trong cột xuất hiện từ ngày 1 đến ngày 31; khi chọn tháng 2 thì trong cột xuất hiện từ ngày 1 đến ngày 28...

Hiện tại mình đã làm được bằng công thức nhưng dữ liệu ngày không sử dụng được với Cutom Format cells (xem file đính kèm)

Bạn nào biết giúp mình với. Xin cảm ơn !
 

File đính kèm

Em thì dùng VBA. Bác xem thử nha!
Thân.
 

File đính kèm

Cũng chỉ là format cell, nhưng sửa công thức lại 1 tí để cho kết quả là ngày:
G3 = IF (LEN(TEXT(ROW(G3)-2&"/"&G$2;"dd/mm/yyyy"))<5;"";DATE(2009;G$2;ROW(G3)-2))
Note:
- Trường hợp 1: số 4 riêng rẽ là tương đương với 04/01/1900 là phải rồi
- Trường hợp 2: Kết quả công thức là text thì làm sao định dạng kiểu ngày tháng được?
 

File đính kèm

Cảm ơn Po_pikachu! mình đã test thử cách cuả bạn được rôì.
File của bạn thiếu 1 tham số quan trọng, đó là YEAR (có ngày, tháng, nhưng năm mấy mới được chứ)
Bạn xem file nhé! Chỉ 1 name là đủ
Thật ra khỏi cần name nào cũng được (gán công thức trực tiếp vào Validation là xong)... nhưng tôi vẫn muốn giữ name này, phòng trường hợp ta dùng list vào sheet khác
 

File đính kèm

Cảm ơn Ndu! trúng phóc ý của mình rồi.

@ Po_pikachu: lúc mình down về test thử thì thấy được sau khi lưu lại vào máy mở ra thì lại không được, nó báo lỗi ở dòng có Calendar1 hay là do máy mình không có Calendar1 ? cách khắc phục thế nào nhỉ ?
 
Cảm ơn Ndu! trúng phóc ý của mình rồi.

@ Po_pikachu: lúc mình down về test thử thì thấy được sau khi lưu lại vào máy mở ra thì lại không được, nó báo lỗi ở dòng có Calendar1 hay là do máy mình không có Calendar1 ? cách khắc phục thế nào nhỉ ?
Nếu xài Calendar thì đâu cần tạo list
Bạn mở 1 file Excel trên, trên thanh Control Toolbox có 1 nút tên là More Control (hình cái búa)... bạn bấm vào sẽ thấy 1 list xổ xuống!.. xem thử trong list có mục Calendar Control 11 không? (đúng ra là phải có chứ nhỉ)
Còn code báo lổi thế nào, bạn đưa lên xem thử
 
Mình muốn tạo một cột ngày trong tháng để phục vụ cho một số công việc.
Vd: khi chọn tháng 1 thì trong cột xuất hiện từ ngày 1 đến ngày 31; khi chọn tháng 2 thì trong cột xuất hiện từ ngày 1 đến ngày 28...

Hiện tại mình đã làm được bằng công thức nhưng dữ liệu ngày không sử dụng được với Cutom Format cells (xem file đính kèm)

Bạn nào biết giúp mình với. Xin cảm ơn !


Xem file này được không?
 

File đính kèm

Lần chỉnh sửa cuối:
Gửi Lão Cheettitduchuynh103.

Những công thức này (tại G3):
  • [Ptm0412] =IF(LEN(TEXT(ROW(G3)-2&"/"&G$2,"dd/mm/yyyy"))<5, "", DATE(2009,G$2,ROW(G3)-2))

  • [duchuynh103] =IF(LEN(TEXT(ROW(G3)-2&"/"&G$2,"dd/mm/yyyy"))<5, "", TEXT(ROW(G3)-2&"/"&G$2,"dd/mm/yyyy"))
Đã đứng ngay tại G3 gõ công thức rồi, thì đâu cần ROW(G3) nữa? Chỉ cần ROW() thôi mà?
 
Công thức đó là của TrungChinh, chỉ "sửa 1 tí" (sic) phần bị lỗi, không sửa hết. Sửa luôn thì còn ngắn gọn hơn nữa.
 
Cảm ơn duchuynh103.
Thì ra là Cutom Format Cells "cập nhật lần cuối " @ hôm nay mới biết thêm cái này.

Nếu xài Calendar thì đâu cần tạo list
Bạn mở 1 file Excel trên, trên thanh Control Toolbox có 1 nút tên là More Control (hình cái búa)... bạn bấm vào sẽ thấy 1 list xổ xuống!.. xem thử trong list có mục Calendar Control 11 không? (đúng ra là phải có chứ nhỉ)
Còn code báo lổi thế nào, bạn đưa lên xem thử

@ Ndu: đúng là xài Calendar thì không cần tạo list, làm theo bài của bạn thì OK rồi nhưng mình muốn nghiên cứu cả cách của Po_pikachu, mình đã kiểm tra trong máy có Control 11.0 vì vậy có thể là do code mình đã sửa sai (fỉle đính kèm) bạn xem giúp mình nhé !
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
@ Ndu: đúng là xài Calendar thì không cần tạo list, làm theo bài của bạn thì OK rồi nhưng mình muốn nghiên cứu cả cách của Po_pikachu, mình đã kiểm tra trong máy có Control 11.0 vì vậy có thể là do code mình đã sửa sai (fỉle đính kèm) bạn xem giúp mình nhé !
Code đúng toàn bộ... vấn đề làm bạn chưa vẽ ra Calendar lên bảng tính ---> Vậy thôi
Bấm nút More Control trên thanh Cotrol Toolbox, chọn Calendar Control 11 rồi vẽ ra là xong!
-----------
Mạn phép sửa lại code cho gọn!
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Calendar1.Visible = (Target.Address = "$H$1")
End Sub
PHP:
Private Sub Calendar1_Click()
   [H1].Value = Calendar1
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
@ Ndu: đúng là xài Calendar thì không cần tạo list, làm theo bài của bạn thì OK rồi nhưng mình muốn nghiên cứu cả cách của Po_pikachu, mình đã kiểm tra trong máy có Control 11.0 vì vậy có thể là do code mình đã sửa sai (fỉle đính kèm) bạn xem giúp mình nhé !
Phần lỗi thì bác NDU đã chỉ rồi. Chỉ là do chưa có Calendar1 thôi.
Còn phần code nếu muốn có thêm phần text thì viết như vầy sẽ ngắn hơn.
PHP:
Private Sub Calendar1_Click()
   [H1].Value = "Cap nhat ngay " & Format(Calendar1, "dd/mm/yyyy")
   Calendar1.Visible = False
   [H2].Select
End Sub
Thân.
 
Phần lỗi thì bác NDU đã chỉ rồi. Chỉ là do chưa có Calendar1 thôi.
Còn phần code nếu muốn có thêm phần text thì viết như vầy sẽ ngắn hơn.
PHP:
Private Sub Calendar1_Click()
   [H1].Value = "Cap nhat ngay " & Format(Calendar1, "dd/mm/yyyy")
   Calendar1.Visible = False
   [H2].Select
End Sub
Thân.
Theo tôi không nên thêm TEXT vào... (sẽ không tính toán được) ---> Phần này nên "giao" cho Custom Format làm (như trong file đính kèm của tôi đã làm ấy)
 
Tôi muốn sửa ActiveCell.Select code này
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Calendar1.Visible = ActiveCell.Select
End Sub
Private Sub Calendar1_Click()
   ActiveCell.Value = Calendar1
   Calendar1.Visible = falde
End Sub
Để code này chỉ chạy khi chọn 1 ô trong vùng nhất định ví dụ: khi chọn 1 ô H5 hoặc I7 trong vùng H3:J100 thì sửa như thế nào ? Thank !
 
Lần chỉnh sửa cuối:
Đoạn này:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Calendar1.Visible = ActiveCell.Select
End Sub
Bạn sửa lại thành:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Calendar1.Visible = (Not Intersect(Union([H5], [I7]), Target) Is Nothing)
End Sub
Hay viết dài dòng (nhưng rõ ràng hơn):
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Union([H5], [I7]), Target) Is Nothing Then
    Calendar1.Visible = True
  Else
    Calendar1.Visible = False
  End If
End Sub
 
Lần chỉnh sửa cuối:
@ Ndu. Mình Xin lỗi vì câu hỏi không rõ: ý mình muốn hỏi là chọn 1 ô bất kỳ trong vùng H3:J100 (H5; I7 chỉ là ô ví dụ).
Các bạn giúp mình với nhé. Thank !
 
@ Ndu. Mình Xin lỗi vì câu hỏi không rõ: ý mình muốn hỏi là chọn 1 ô bất kỳ trong vùng H3:J100 (H5; I7 chỉ là ô ví dụ).
Các bạn giúp mình với nhé. Thank !
Vậy càng khỏe:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Calendar1.Visible = (Not Intersect([H3:J100], Target) Is Nothing)
End Sub
Nói thêm:
- Nếu vùng dử liệu là KHÔNG LIÊN TỤC, bắt buộc bạn phải dùng Union nhé (giống như tôi xài ở code trên)
------------
Thêm nữa:
Vì vùng chọn của bạn khá rộng, để thuận tiện hơn thì khi chọn cell nào, Calendar sẽ "chạy theo" và xuất hiện cạnh bên! Đồng ý chứ
Bạn dùng code này:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With Target
    Calendar1.Visible = (Not Intersect([H3:J100], Target) Is Nothing)
    Calendar1.Top = .Top: Calendar1.Left = .Offset(, 1).Left
  End With
End Sub
 
Lần chỉnh sửa cuối:
Cảm ơn Ndu Tôi đã test thử, kết quả đúng yêu cầu rồi. (loay hoay từ sáng đến giờ làm không được)

Làm thế nào để Calendar1 luôn xuất hiện tại vùng ActiveCell ? Thank!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Làm thế nào để Calendar1 luôn xuất hiện tại vùng ActiveCell ? Thank!
Là sao ta? Ý bạn muốn nó luôn xuất hiện à? Nếu thế thì xóa đoạn:
Calendar1.Visible = (Not Intersect([H3:J100], Target) Is Nothing)
là xong!
Nhớ xóa luôn đoạn:
Calendar1.Visible = falde
ở code phía dưới nhé
 
Lần chỉnh sửa cuối:
Tức là khi ta cuộn bảng tính lên hoặc xuống và chọn 1 ô nào đó thì Calendar1 luôn xuất hiện bên cạnh ô vừa chọn khỏi phải đi tìm nó vì tôi thấy nó luôn xuất hiện ở vị trí ban đầu mình vẽ ra nó
 
Lần chỉnh sửa cuối:
Tức là khi ta cuộn bảng tính lên hoặc xuống và chọn 1 ô nào đó thì Calendar1 luôn xuất hiện bên cạnh ô vừa chọn khỏi phải đi tìm nó vì tôi thấy nó luôn xuất hiện ở vị trí ban đầu mình vẽ ra nó
Ôi... xin đọc lại bài #17 ... tôi đã bổ sung sau đó ít phút (code dưới cùng ấy) ---> Đã lường trước vụ này rồi mà... không ngờ là bạn.. chưa xem kịp
Ẹc... Ẹc...
 
Ôi... xin đọc lại bài #17 ... tôi đã bổ sung sau đó ít phút (code dưới cùng ấy) ---> Đã lường trước vụ này rồi mà... không ngờ là bạn.. chưa xem kịp
Ẹc... Ẹc...

Tôi đã xem lại bài 17 và test thử rồi, kết quả rất tốt, thì ra bạn đã lường trước vụ này, bái phục, bái phục.

Cảm ơn bạn rất nhiều !
 
Định dạng ngày thứ 7 và chủ nhật có màu đỏ

File của bạn thiếu 1 tham số quan trọng, đó là YEAR (có ngày, tháng, nhưng năm mấy mới được chứ)
Bạn xem file nhé! Chỉ 1 name là đủ
Thật ra khỏi cần name nào cũng được (gán công thức trực tiếp vào Validation là xong)... nhưng tôi vẫn muốn giữ name này, phòng trường hợp ta dùng list vào sheet khác

Em cũng có thắc mắc giống như thành viên Trung Chinh , em muôn hỏi thêm 1 ý: Có cách nào format ô ngày , ngày thứ 7 và chủ nhật sẽ có màu đỏ.

Em xin cảm ơn!
 

File đính kèm

Em cũng có thắc mắc giống như thành viên Trung Chinh , em muôn hỏi thêm 1 ý: Có cách nào format ô ngày , ngày thứ 7 và chủ nhật sẽ có màu đỏ.

Em xin cảm ơn!
Cái này dùng Conditional Formating mà làm
1> Quét chọn các cell C4:C33
2> Vào menu Format\Conditional Formating:
- Khung Condition 1, chọn Formula Is
- Khung bên phải gõ công thức: =WEEKDAY($C4,2)>5
- Bấm nút Format và tô màu tùy ý
3> OK 1 nhát và xem màu thay đổi
 

File đính kèm

Cái này dùng Conditional Formating mà làm
1> Quét chọn các cell C4:C33
2> Vào menu Format\Conditional Formating:
- Khung Condition 1, chọn Formula Is
- Khung bên phải gõ công thức: =WEEKDAY($C4,2)>5
- Bấm nút Format và tô màu tùy ý
3> OK 1 nhát và xem màu thay đổi

Em đã định dạng được như ý muốn, nhưng em muốn các ngày trong tháng nằm trên 1 dòng ngang, em đã chỉnh lại công thức (theo cách em hiểu!) nhưng không kéo công thức đi được. Chỉ giúp em cái sai của em. Em cảm ơn.
 

File đính kèm

Em đã định dạng được như ý muốn, nhưng em muốn các ngày trong tháng nằm trên 1 dòng ngang, em đã chỉnh lại công thức (theo cách em hiểu!) nhưng không kéo công thức đi được. Chỉ giúp em cái sai của em. Em cảm ơn.
Bạn kéo fill theo hàng dọc thì dùng hàm ROWS, đương nhiên nếu kéo theo hàng ngang thì không thể dùng ROWS được mà phải là COLUMNS
PHP:
C4 =IF(COLUMNS($A:A)>DAY(DATE($C$2,$C$3+1,0)),"",DATE($C$2,$C$3,COLUMNS($A:A)))
Kéo fill sang phải
 

File đính kèm

Em muốn thay vì hiển thị 1-Jul, 2-Jul, ... thì chỉ hiển thị ngày thôi (1, 2, ...), không hiển thị tháng nhưng trong format cells em không thấy định dạng chỉ hiển thị ngày. Vậy em dùng công thức gì?
hienthingay.jpg


Em cảm ơn!
 
Em muốn thay vì hiển thị 1-Jul, 2-Jul, ... thì chỉ hiển thị ngày thôi (1, 2, ...), không hiển thị tháng nhưng trong format cells em không thấy định dạng chỉ hiển thị ngày. Vậy em dùng công thức gì?
hienthingay.jpg


Em cảm ơn!
Vào FomatCell, chọn Custom, bên Type gõ dd là OK
 
Cảm ơn duchuynh103.
Thì ra là Cutom Format Cells "cập nhật lần cuối " @ hôm nay mới biết thêm cái này.

@ Ndu: đúng là xài Calendar thì không cần tạo list, làm theo bài của bạn thì OK rồi nhưng mình muốn nghiên cứu cả cách của Po_pikachu, mình đã kiểm tra trong máy có Control 11.0 vì vậy có thể là do code mình đã sửa sai (fỉle đính kèm) bạn xem giúp mình nhé !
Sao nó báo lỗi nhỉ
Calendar1.Visible = False bó tay luôn!

Cần giúp đỡ
 

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

Back
Top Bottom