nguyenhongphong
Thành viên hoạt động



- Tham gia
- 12/3/08
- Bài viết
- 126
- Được thích
- 13
Bạn xem trong file có được không nhé!
. Hay quá=DATE($B$1,MATCH($B$2,$C$6:$C$17,0),ROWS($1:1))
Sao không sử dụng Calendar Control cho tiện nhỉ. Thêm một doạn code ngắn để ẩn hiện tùy thích nếu thấy chướng mắt với cái Control đó.Ý e là sử dụng validation như a Tiến hướng dẫn đó a!
Cám ơn anh.
Calendar này còn phải cải tiến thêm nhiều ---> Chức năng Copy/Paste bị "tèo" rồiSao không sử dụng Calendar Control cho tiện nhỉ. Thêm một doạn code ngắn để ẩn hiện tùy thích nếu thấy chướng mắt với cái Control đó.
E vẫn chưa hiểu tại sao hàm match đây +1 và ,1 cuối cùng của hàm offset là hàm sẽ dò cột của tháng: Jan,Feb,Mar,..., ko phải dò vào cột Ngày nữa. Nhưng kết quả của a Tiến lại rất chính xác theo ngày tháng năm.=OFFSET(Sheet1!$B$6,,,DAY(DATE(Sheet1!$B$1,MATCH(Sheet1!$B$2,Sheet1!$C$6:$C$17,0)+1,0)),1)
1/Theo mình hiểu không có ngày 0. Nếu ô đó nhập 0/3/2010 thì nó sẽ trở về ngày 28/2/2009 (Tức trở về ngày cuối tháng trước đó) (Thay vì nhập DATE(Sheet1!$B$1;MATCH(Sheet1!$B$2;Sheet1!$C$6:$C$17;0);28)=28/2/2014Em cũng xin thú thật,
E vẫn chưa hiểu tại sao hàm match đây +1 và ,1 cuối cùng của hàm offset là hàm sẽ dò cột của tháng: Jan,Feb,Mar,..., ko phải dò vào cột Ngày nữa. Nhưng kết quả của a Tiến lại rất chính xác theo ngày tháng năm.
Nhờ A/C hướng dẫn thêm giúp e
Hàm MATCH(Sheet1!$B$2,Sheet1!$C$6:$C$17,0) để xem mấy chữ bạn chọn (JAN, FEB... DEC) tương ứng với số mấy (1, 2.... 12)Em cũng xin thú thật,
E chưa từng đọc và tìm hiểu mấy cái VBA trong excel.
Nên nhìn thấy đoạn code e cũng sợ lắm.
Nếu a đã từng đọc qua link hướng dẫn căn bản về VBA. Xin a Thắng post lên giúp e.
Em xin quay lại bài giải của a Tiến 1 chút, vì e có chỗ còn thắc mắc.
E vẫn chưa hiểu tại sao hàm match đây +1 và ,1 cuối cùng của hàm offset là hàm sẽ dò cột của tháng: Jan,Feb,Mar,..., ko phải dò vào cột Ngày nữa. Nhưng kết quả của a Tiến lại rất chính xác theo ngày tháng năm.=OFFSET(Sheet1!$B$6,,,DAY(DATE(Sheet1!$B$1,MATCH(S heet1!$B$2,Sheet1!$C$6:$C$17,0)+1,0)),1)
Nhờ A/C hướng dẫn thêm giúp e
Khắc phục cái này đâu có gì khó. Vấn đề là một hướng làm khác.Calendar này còn phải cải tiến thêm nhiều ---> Chức năng Copy/Paste bị "tèo" rồi
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
Calendar1.Visible = True
ElseIf Calendar1.Visible = True Then
Calendar1.Visible = False
End If
End Sub
Vâng! Thì đâu có gì khó ---> Bạn thử copy cell A1 paste sang cell khác xemKhắc phục cái này đâu có gì khó. Vấn đề là một hướng làm khác.
PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then Calendar1.Visible = True ElseIf Calendar1.Visible = True Then Calendar1.Visible = False End If End Sub
Thật sự là chẳng có gì khó cả. Vấn đề là cần tới đâu làm tới đó. Không nên bới móc quá nhiều.Vâng! Thì đâu có gì khó ---> Bạn thử copy cell A1 paste sang cell khác xem
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = 1 Then Exit Sub
If Target.Address = "$A$1" Then
Calendar1.Visible = True
ElseIf Calendar1.Visible = True Then
Calendar1.Visible = False
End If
End Sub
---Thật sự là chẳng có gì khó cả. Vấn đề là cần tới đâu làm tới đó. Không nên bới móc quá nhiều.
Trời đất ---> Mình đang bàn về kỹ thuật ---> Mà đã gọi là kỹ thuật thì phải liên tục hoàn thiện chứThật sự là chẳng có gì khó cả. Vấn đề là cần tới đâu làm tới đó. Không nên bới móc quá nhiều.
PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.CutCopyMode = 1 Then Exit Sub If Target.Address = "$A$1" Then Calendar1.Visible = True ElseIf Calendar1.Visible = True Then Calendar1.Visible = False End If End Sub
Tôi chỉ là dân Amateur. Vì vậy, với tôi chỉ cần đáp ứng đủ nhu cầu đặt ra là được, không cần phải quá hoàn thiện.Trời đất ---> Mình đang bàn về kỹ thuật ---> Mà đã gọi là kỹ thuật thì phải liên tục hoàn thiện chứ
Tôi tin chắc khi bạn xây dựng code bạn cũng chưa từng hình dung đến những trục trặc có thể xãy ra (tôi cũng thế thôi)
Không biết bạn thì sao, chứ riêng tôi, được người ta bơi móc là niềm hạnh phúc, vì qua đó tôi có thể hoàn thiện thêm thuận toán của riêng mình
---------------------
Bơi móc tiếp đây:
- Khi đang copy thì Calendar không ẩn khi con trỏ nằm ngoài cell A1
- Chẳng hiểu sao cell A1 lại ở dạng TEXT nhỉ (sao mà tính toán)
Nếu bạn cho rằng CHẲNG CÓ GÌ KHÓ CẢ thì xin mời hoàn thiện tiếp
Ẹc... Ẹc...
---------------------
(Code Selection_Change là món mà tôi cho là khó nhai nhất)
Private Sub Calendar1_AfterUpdate()
[A1].Value = Calendar1.Value
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = 1 And Calendar1.Visible = True Then
Calendar1.Visible = False
[A1].Copy
End If
If Target.Address = "$A$1" Then
Calendar1.Visible = True
ElseIf Calendar1.Visible = True Then
Calendar1.Visible = False
End If
End Sub
Ai dám bảo bạn là Amateur khi bạn cho rằng bài này KHÔNG CÓ GÌ KHÓTôi chỉ là dân Amateur. Vì vậy, với tôi chỉ cần đáp ứng đủ nhu cầu đặt ra là được, không cần phải quá hoàn thiện.
PHP:Private Sub Calendar1_AfterUpdate() [A1].Value = Calendar1.Value End Sub
PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.CutCopyMode = 1 And Calendar1.Visible = True Then Calendar1.Visible = False [A1].Copy End If If Target.Address = "$A$1" Then Calendar1.Visible = True ElseIf Calendar1.Visible = True Then Calendar1.Visible = False End If End Sub
A1 là cell định dạng ngày tháng và có một Control hỗ trợ nhập liệu rồi. Không lý gì lại cần phải copy dữ liệu từ một Cell khác nữa.Ai dám bảo bạn là Amateur khi bạn cho rằng bài này KHÔNG CÓ GÌ KHÓ
Thế là tương đối hoàn thiện rồi! (Bị hỏng ở chổ không copy chổ khác vào A1 được)
Bạn không thấy rằng nhờ có người bơi móc mà bạn nghiên cứu thêm được sao?
Ẹc... Ẹc...
Mời nghiên cứu tiếp nếu bạn vẫn còn cảm thấy... DỂ
Private Sub Calendar1_AfterUpdate()
[A1].Value = Calendar1.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Calendar1.Visible = False Then
Calendar1.Visible = True
Calendar1.Value = [A1].Value
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = 1 And Calendar1.Visible = True Then
Calendar1.Visible = False
[A1].Copy
ElseIf Application.CutCopyMode = 1 And Target.Address = "$A$1" Then
Exit Sub
End If
If Target.Address = "$A$1" Then
Calendar1.Visible = True
ElseIf Calendar1.Visible = True Then
Calendar1.Visible = False
End If
End Sub
Cũng không chắc là không có ai cần đến yêu cầu này đâu (tôi đã từng thấy khi người ta chỉnh sửa dử liệu)Không lý gì lại cần phải copy dữ liệu từ một Cell khác nữa.
Chính xác! Nhưng có phải là ứng dụng càng hoàn hảo thì càng tốt hơn không?có nghiên cứu thì cũng hướng về mục đích cuối cùng là ứng dụng.
Nếu đã copy, sau đó đương nhiên phải paste. Có cần phải hiện Control chăng? Có ai copy để... chẳng làm gì cả ko?- Bây giờ thì copy nơi khác vào A1 được nhưng khi ấy cái Calendar nó không hiện ra (Copy/Paste xong rồi nó mới hiện)
- Copy tại 1 cell khác (chưa paste) rồi chọn vào A1, Calendar nó cũng... cóc hiện luôn
Tôi nghĩ bạn thừa sức biết đó không phải là lỗi của code.- Tệ hơn nữa: Copy 1 cell rổng, Paste vào A1 (làm 1 vài lần) sẽ có 1 thời điểm nào đó mà ta chọn vào Calendar, nó chẳng chịu điền dử liệu vào A1
Tình huống thế này:Nếu đã copy, sau đó đương nhiên phải paste. Có cần phải hiện Control chăng? Có ai copy để... chẳng làm gì cả ko?
Tôi chẳng biết nữa ---> Lổi xuất hiện thì ta phải quy nó là do code gây raTôi nghĩ bạn thừa sức biết đó không phải là lỗi của code.
Thử copy một cell rỗng paste vào A1 cho đến khi "A1 không nhận giá trị của Control" rồi thay đổi giá trị của Control, chọn A1 và nhìn lên thanh Formula xem có phải cell ko nhận giá trị từ Control hay vì một lý do khác!!![/QUOTE]Tôi chẳng biết nữa ---> Lổi xuất hiện thì ta phải quy nó là do code gây ra
Như tôi đã nói từ đầu, tôi chỉ là dân Amateur nên với tôi hài lòng nếu đạt được kết quả. Còn quá trình thực hiện như thế nào không quan trọng.Vấn đề xử lý Selection_Change thật không dể ăn như bạn đã nghĩ đâu, nhưng tất nhiên là người ta có phương pháp riêng, đơn giản và hiệu quả (và cũng tất nhiên không giống như bạn đã xử lý ---> Lòng thòng quá)
---------------------------------
Nói tóm lại: Tôi khẳng định rằng những lổi mà tôi nêu ra là hoàn toàn có thể xử lý được tất, thậm chí là rất đơn giản nữa ---> Bạn cứ nghiên cứu tiếp đi, đến khi nào hết chịu nổi thì thôi... Ẹc... Ẹc...
Uh... Chổ này thì tôi nhầm, là do FormatThử copy một cell rỗng paste vào A1 cho đến khi "A1 không nhận giá trị của Control" rồi thay đổi giá trị của Control, chọn A1 và nhìn lên thanh Formula xem có phải cell ko nhận giá trị từ Control hay vì một lý do khác!!!
Trên GPE này dân không chuyên thiếu gì hả bạn? Tôi còn tệ hơn ở chổ công việc của tôi chẳng liên quan gì đến Excel cảNhư tôi đã nói từ đầu, tôi chỉ là dân Amateur nên với tôi hài lòng nếu đạt được kết quả. Còn quá trình thực hiện như thế nào không quan trọng.
Nếu bạn đó cao kiến thì xin mời.
Ấy... Bạn nói có thể đúng.. nhưng cũng có thể không đúng, ít nhất là đối với tôi!Kính Bạn ndu và Bạn huuthang_bd.
Tôi là thành viên mới của GPE nhưng cũng biết rằng cả hai đều là "Cao thủ Excel", tôi thường xuyên học hỏi các bài viết của các Bạn vì biết rằng những bài viết của các Bạn đều là những bài viết đặc biệt có giá trị về tính khoa học và kinh nghiệm, mọi vấn đề mang tính khoa học và kinh nghiệm đều được các thành viên GPE trân trọng học hỏi và ngàn lời đa tạ. Một khi có sự "mâu thuẩn" của các "Cao thủ" cũng giống như trẻ con gặp người lớn đánh nhau, vừa sợ hãi vừa không kính trọng, rất mong các Bạn vì mục đích chung là "GPE" để các thành viên mới chúng tôi học hỏi được nhiều điều hay của Excel hơn nữa.
Trân trọng làm quen với ndu và huuthang_bd.
Ba Tê.
Vậy mà tôi lại tìm thấy một bài viết mà giải pháp chẳng khác gì giải pháp của tôi.Nói tóm lại: Tôi khẳng định rằng những lổi mà tôi nêu ra là hoàn toàn có thể xử lý được tất, thậm chí là rất đơn giản nữa ---> Bạn cứ nghiên cứu tiếp đi, đến khi nào hết chịu nổi thì thôi... Ẹc... Ẹc...
Bạn lạ chưa? Nếu bạn HỎI thì tôi sẽ NÓI cho bạn biếtVậy mà tôi lại tìm thấy một bài viết mà giải pháp chẳng khác gì giải pháp của tôi.
http://www.giaiphapexcel.com/forum/showpost.php?p=188818&postcount=4
Có lẽ tác giả muốn giấu cái giải pháp rất đơn giản nhưng lại hiệu quả cho riêng mình!!!
.
Đã có rất nhiều trên Diễn đànAnh ơi cho e hỏi làm sao kết hợp Match và index để dò tìm tháng theo tháng trong bảng dò là kiểu dữ liệu có cả ngày/tháng/năm ạ?![]()
Hỏi lại bạn: Nếu trong bảng dò có nhiều cell có cùng tháng với trị dò thì sẽ lấy giá trị nào? Giá trị đầu tiên? Hay giá trị cuối cùng? Hay.. cái khác?Anh ơi cho e hỏi làm sao kết hợp Match và index để dò tìm tháng theo tháng trong bảng dò là kiểu dữ liệu có cả ngày/tháng/năm ạ?![]()