PDA

View Full Version : Ý tưởng LẬP CÔNG THỨC CHUYỂN ĐỔI QUA LẠI NGÀY DƯƠNG LỊCH - NGÀY ÂM LỊCH



boyxin
09-05-08, 08:28 AM
Ý TƯỞNG: LẬP CÔNG THỨC CHUYỂN ĐỔI QUA LẠI NGÀY DƯƠNG LỊCH - NGÀY ÂM LỊCH

Lý do:
Sau 1 thời gian nghiên cứu, mò mẫm các công thức từ các file của các bác gửi trên GPE, được các bác trên GPE giúp đỡ nhiệt tình, góp ý cho em nhiều ý tưởng hay. Em đã hoàn thành tờ lịch tháng có đầy đủ thông tin về ngày âm lịch (can, Chi, tháng nhuận, tháng đủ hay thiếu ...)

Khi mở file luôn hiện trang lịch với NGÀY THÁNG NĂM hiện hành được tô màu xanh
Trang Ghi chú
1- Ngày cố định có sự kiện thì nhập đủ (dd-mm-yyyy)
2- Ngày hàng năm đều diễn ra sự kiện thì nhập (dd-mm)
3- Ngày nhập chuyển MÀU ĐỎ NỀN VÀNG => Trùng ngày. Lịch chỉ hiện được 1 sự kiện được ghi sau (phía dưới hoặc theo cột G)
4- Trường hợp một số sự kiện xảy ra có mốc thời gian thì bổ sung thêm năm vào cột G (Từ năm nào) VD: sự kiện 30-4 "Giải phóng Miền nam" thì bổ sung Từ năm 1975, ...
Trang Lịch có 3 điều khiển

1- Spinner Góc trên, bên trái để thay đổi THÁNG của Lịch
2- Spinner Góc trên, bên phải để thay đổi NĂM của Lịch
3- Check Box để thay đổi ngày đầu tuần là THỨ 2 hay là CHỦ NHẬT
Ngoài ra còn bổ sung thêm được một số câu ca dao tục ngữ được lựa chọn một cách ngẫu nhiên để hiển thị

http://www.giaiphapexcel.com/forum/images/attach/rar.gif Lich Am Duong (version 2).rar (http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=10015&stc=1&d=1210256336) (133.0 KB)


(Từ tháng 12 năm 1959 đến tháng 12 năm 2049)

TUY NHIÊN THẤY VẪN CÒN TỒN TẠI CHƯA KHẮC PHỤC ĐƯỢC


Khi cho chay Macro để hiện trên thanh trạng thái (hàm Now được cập nhật liên tục) để hiện ngày và giờ thì khi thoát File phải tắt bằng nút [x] Close màu đỏ thì không vấn đề gì, nhưng nếu thoát File bằng cách dùng nút [x] Close Window màu đen, vẫn để Excel hoạt động thì Macro lại khởi động lại File
,
MONG CÁC BÁC GÓP Ý THÊM ĐỂ EM HOÀN THIỆN
----------------------------------------------
MONG CÁC BÁC GIÚP EM MẤY VẤN ĐỀ SAU

Em muốn tạo ra 1 cell: sau 1 phút thì giá trị số trong cell đó thay đổi (em chỉ cần thay đổi giá trị, còn cụ thể nó là bao nhiêu không quan trọng) để em điều chỉnh cho tờ lịch sau 1 phút thì thay câu ca dao tục ngữ đã hiển thị bằng 1 câu khác
Có cách nào để sau khi Search trong 1 vùng nào đó, sau khi tìm thấy giá trị cần tìm trong 1 cell nào đó thì cho hiện địa chỉ của cell đó không? Mong được các bác giúp đỡ
Liệu có công thức nào ngắn gọn để chuyển đổi ngày dương lịch sang ngày âm lịch và ngược lại không? cho em xin nhaMong sớm có hồi âm

anhtuan1066
09-05-08, 09:26 AM
MONG CÁC BÁC GIÚP EM MẤY VẤN ĐỀ SAU
Em muốn tạo ra 1 cell: sau 1 phút thì giá trị số trong cell đó thay đổi (em chỉ cần thay đổi giá trị, còn cụ thể nó là bao nhiêu không quan trọng) để em điều chỉnh cho tờ lịch sau 1 phút thì thay câu ca dao tục ngữ đã hiển thị bằng 1 câu khác
Có cách nào để sau khi Search trong 1 vùng nào đó, sau khi tìm thấy giá trị cần tìm trong 1 cell nào đó thì cho hiện địa chỉ của cell đó không? Mong được các bác giúp đỡ
Liệu có công thức nào ngắn gọn để chuyển đổi ngày dương lịch sang ngày âm lịch và ngược lại không? cho em xin nhaMong sớm có hồi âm
Câu 1: tôi nghĩ bạn làm dc mà, giã sử rằng trong 1 giờ cho chuyển đổi 6 lần thì dùng INT(MINUTE/10) ... giá trị nhận dc là 0, 1, 2, 3, 4 và 5... từ đó bạn làm gì với giá trị này thì làm
Câu 2: Làm dc nhưng nếu có dử liệu trùng thì tính sao đây? Đại khái thuật toán sẽ là:

=IF(Vung=giá trị tìm,ADDRESS(ROW(Vung),COLUMN(Vung)),"")
Câu 3: Trước giờ chưa thấy ai làm dc nó bằng công thức cả... toàn thấy dùng VBA
ANH TUẤN

boyxin
09-05-08, 09:42 AM
Câu 1: tôi nghĩ bạn làm dc mà, giã sử rằng trong 1 giờ cho chuyển đổi 6 lần thì dùng INT(MINUTE/10) ... giá trị nhận dc là 0, 1, 2, 3, 4 và 5... từ đó bạn làm gì với giá trị này thì làm
Câu 2: Làm dc nhưng nếu có dử liệu trùng thì tính sao đây? Đại khái thuật toán sẽ là:

=IF(Vung=giá trị tìm,ADDRESS(ROW(Vung),COLUMN(Vung)),"")
Câu 3: Trước giờ chưa thấy ai làm dc nó bằng công thức cả... toàn thấy dùng VBA
ANH TUẤN
Mình đã dùng hàm now() nhưng muốn thay đổi giá trị thì lại phải nhấn F9, Ý mình là muốn không cần phải nhấn F9 mà tự dộng nó thay đổi
--------------------------------------------------------------------------------

Câu 1: tôi nghĩ bạn làm dc mà, giã sử rằng trong 1 giờ cho chuyển đổi 6 lần thì dùng INT(MINUTE/10) ... giá trị nhận dc là 0, 1, 2, 3, 4 và 5... từ đó bạn làm gì với giá trị này thì làm
Câu 2: Làm dc nhưng nếu có dử liệu trùng thì tính sao đây? Đại khái thuật toán sẽ là:

=IF(Vung=giá trị tìm,ADDRESS(ROW(Vung),COLUMN(Vung)),"")
Câu 3: Trước giờ chưa thấy ai làm dc nó bằng công thức cả... toàn thấy dùng VBA
ANH TUẤN
Dùng công thức nó chỉ cho ra kết quả là địa chỉ của cell đầu tiên trong vùng thôi, không ra được địa chỉ của cell timg thấy
Chắc là phải sửa chỗ nào đó roài

anhtuan1066
09-05-08, 10:01 AM
Mình đã dùng hàm now() nhưng muốn thay đổi giá trị thì lại phải nhấn F9, Ý mình là muốn không cần phải nhấn F9 mà tự dộng nó thay đổi
Cái này bạn phải cho vào VBA mới ổn, xài công thức thì thua... Cách tôi nói chỉ là thuật toán thôi...
----------------------------------


Liệu dùng công thức được không hay lại phải dùng VBA? mình sẽ thử
Dùng công thức dc chứ... có phải gần giống với bài toán này ko:
http://www.giaiphapexcel.com/forum/showthread.php?t=9874
ANH TUẤN

boyxin
09-05-08, 10:16 AM
Cái này bạn phải cho vào VBA mới ổn, xài công thức thì thua... Cách tôi nói chỉ là thuật toán thôi...
----------------------------------


Dùng công thức dc chứ... có phải gần giống với bài toán này ko:
http://www.giaiphapexcel.com/forum/showthread.php?t=9874
ANH TUẤN

vấn đề cụ thể trong file đính kèm

anhtuan1066
09-05-08, 12:00 PM
vấn đề cụ thể trong file đính kèm
Xem file thử vầy dc ko nhé!
ANH TUẤN

boyxin
09-05-08, 01:13 PM
Xem file thử vầy dc ko nhé!
ANH TUẤN

cảm ơn anhtuan1066
- như vầy là tìm phần tử trong vùng 2 nếu thấy trong vùng 1 thì cho kết quả là địa chỉ trong vùng 1 (khác với ý của mình - tại 1 cell thôi, tìm trong vùng 1 ...)
- trong file thực tế, vùng 2 của mình nằm trong 1 bảng dữ liệu có khoảng 1000 dòng, nếu theo phương án này thì phải làm cột phụ => số lượng công thức gia tăng, sẽ làm tăng dung lượng file rất nhiều (điều này mình không muốn nếu có thể tìm được cách khác)
- có lẽ phải dùng VBA vậy


Hỏng hiểu! Bạn có thể diển đạt bằng cách gõ vào file kết quả mà bạn mong muốn đạt dc, từ đó mới có thể đoán ý bạn!
ANH TUẤN

ý mình là thế này (không mong muốn có cột phụ)

anhtuan1066
09-05-08, 03:33 PM
ý mình là thế này (không mong muốn có cột phụ)
Trời... sao tôi xem file xong lại càng hỏng hiểu gì vậy ta?
1> H1 ở chổ nào đâu? Nó đang ko có dử liệu cơ mà?
2> Nếu H1 = 59 thì B19 = B7 (hiện tại B7 đang = 79) ???
3> Và cũng ko thấy mối liên quan gì đến dử liệu trong cột I
Có ai hiểu vấn đề này ko ta?
ANH TUẤN

SA_DQ
09-05-08, 04:11 PM
Hãy đọc bài này:
http://www.informatik.uni-leipzig.de/~duc/amlich/calrules.html
Sau đó mới có định hướng được tiếp hay không!

boyxin
09-05-08, 05:41 PM
Trời... sao tôi xem file xong lại càng hỏng hiểu gì vậy ta?
1> H1 ở chổ nào đâu? Nó đang ko có dử liệu cơ mà?
2> Nếu H1 = 59 thì B19 = B7 (hiện tại B7 đang = 79) ???
3> Và cũng ko thấy mối liên quan gì đến dử liệu trong cột I
Có ai hiểu vấn đề này ko ta?
ANH TUẤN

sorry có tý nhầm H2 thành H1

Vùng 1: $A$2:$F$10 Lấy A2 làm gốc (dòng 1 cột 1 của vùng 1)
Vùng 2: cột I $I2:$I$21
mình tạo biến tại H2 để thay đổi giá trị Vùng 2 để kiểm tra

Muốn có 1 công thức tại cell B19 tìm trong vùng 1 nếu thấy giá trị của 1 cell nào đó trùng với dữ liệu của 1 cell nào đó trong vùng 2 thì hiện kết quả là điậ chỉ của cell tìm thấy trong vùng 1

Ví dụ cụ thể:

Khi H2 nhập số 39 thì các giá trị trong vùng 2 thay đổi.
Khi đó công thức tại cell B19 tìm thấy cell D5 = 59 trong vùng 1 trùng với cell I3 trong vùng 2 nên công thức tại cell B19 cho quả là địa chỉ của cell D5 (dòng 4 cột 4 của vùng1)
Khi H2 nhập số 46 thì các giá trị trong vùng 2 thay đổi.
Khi đó công thức tại cell B19 tìm thấy cell B10 = 112 trong vùng 1 trùng với cell I4 trong vùng 2 nên công thức tại cell B19 cho quả là địa chỉ của cell B10 (dòng 9 cột 2 của vùng1)
Khi H2 nhập số 59 thì các giá trị trong vùng 2 thay đổi.
Khi đó công thức tại cell B19 tìm thấy cell B7 = 79 trong vùng 1 trùng với cell I3 trong vùng 2 nên công thức tại cell B19 cho quả là địa chỉ của cell B7 (dòng 6 cột 2 của vùng1)

anhtuan1066
09-05-08, 07:03 PM
Hiểu rồi... Tôi đoán cái bảng mà bạn nói là vùng 1 ấy có thể là quyển lịch 42 cell, còn cột I trong file giã lập có thể là dử liệu trong phần nhập liệu, đúng ko? Vậy thì dùng cột phụ đi, tuy nhiên nếu bạn dùng cột phụ tại cột I thì công thức rất nhiều (vì cột I trong file thật theo bạn nói là rất dài mà)... Vậy thì bạn tạo bãng phụ theo quyển lịch, nghĩa là tạo 42 cell phụ nữa... Vụ này dể mà! (Trong file thì sẽ tạo bãng phụ từ A25:F33)
ANH TUẤN

boyxin
09-05-08, 07:54 PM
Hiểu rồi... Tôi đoán cái bảng mà bạn nói là vùng 1 ấy có thể là quyển lịch 42 cell, còn cột I trong file giã lập có thể là dử liệu trong phần nhập liệu, đúng ko? Vậy thì dùng cột phụ đi, tuy nhiên nếu bạn dùng cột phụ tại cột I thì công thức rất nhiều (vì cột I trong file thật theo bạn nói là rất dài mà)... Vậy thì bạn tạo bãng phụ theo quyển lịch, nghĩa là tạo 42 cell phụ nữa... Vụ này dể mà! (Trong file thì sẽ tạo bãng phụ từ A25:F33)
ANH TUẤN

1- đương nhiên là dùng cột phụ thì có thể nói trình độ đạt chuẩn rồi, muốn là đưa vấn đề này lên GPE để học hỏi thêm có cách nào khác không thoai
2- Vấn đề nữa là thỉnh thoàng có tháng DL có 2 ngày đầu tháng AL thì Lịch hiện tháng AL không chuẩn, dung Match thì lạ phải dung ccọt phụ nữa, nghĩ đã thấy nản

anhtuan1066
09-05-08, 08:47 PM
He... he... Mới vừa nghĩ ra dc 1 cách khỏi cột phụ luôn... Bạn hảy thử xem độ chính xác thế nào nhé:
Đặt name:

VT =MAX(IF(COUNTIF($I$2:$I$21,$A$2:$F$10),ROW($A$2:$F $10)*100+COLUMN($A$2:$F$10),""))
Và cuối cùng tại cell B19 bạn gõ vào công thức:

=ADDRESS(INT(VT/100),MOD(VT,100))
Thuật toán nằm ở chổ COUNTIF($I$2:$I$21,$A$2:$F$10) ấy... Nhưng nếu COUNTIF($A$2:$F$10,$I$2:$I$21) thì... trớt quớt!
(Ê hết cả đầu... đúng là bài toán khá rắc rối)

ANH TUẤN

cadafi
09-05-08, 10:41 PM
He... he... Mới vừa nghĩ ra dc 1 cách khỏi cột phụ luôn... Bạn hảy thử xem độ chính xác thế nào nhé:
Đặt name:

VT =MAX(IF(COUNTIF($I$2:$I$21,$A$2:$F$10),ROW($A$2:$F $10)*100+COLUMN($A$2:$F$10),""))Và cuối cùng tại cell B19 bạn gõ vào công thức:

=ADDRESS(INT(VT/100),MOD(VT,100))Thuật toán nằm ở chổ COUNTIF($I$2:$I$21,$A$2:$F$10) ấy... Nhưng nếu COUNTIF($A$2:$F$10,$I$2:$I$21) thì... trớt quớt!
(Ê hết cả đầu... đúng là bài toán khá rắc rối)

ANH TUẤN

Sao mấy vụ này em ngu ghê ta, không hiểu gì hết +-+-+-+ Anh có thể giải thích giúp không?

SA_DQ
10-05-08, 07:40 AM
Nhưng việc các bạn đã & đang làm, mình cho là rất giống với việc dùng công thức để dịch số ra chữ kia đấy!!!
Vẫn mong các bạn tiếp tục; Có ước muốn biến đá thành vàng mới có ngành hóa học như ngày nay;

Chúc các bạn không thành công cũng thành nhân!!


Âm lịch Việt Nam là một loại lịch thiên văn. Nó được tính toán dựa trên sự chuyển động của mặt trời, trái đất và mặt trăng. Ngày tháng âm lịch được tính dựa theo các nguyên tắc sau:
Ngày đầu tiên của tháng âm lịch là ngày chứa điểm Sóc
Một năm bình thường có 12 tháng âm lịch, một năm nhuận có 13 tháng âm lịch
Đông chí luôn rơi vào tháng 11 âm lịch
Trong một năm nhuận, nếu có 1 tháng không có Trung khí thì tháng đó là tháng nhuận. Nếu nhiều tháng trong năm nhuận đều không có Trung khí thì chỉ tháng đầu tiên sau Đông chí là tháng nhuận
Việc tính toán dựa trên kinh tuyến 105° đông.
Sóc là thời điểm hội diện, đó là khi trái đất, mặt trăng và mặt trời nằm trên một đường thẳng và mặt trăng nằm giữa trái đất và mặt trời. (Như thế góc giữa mặt trăng và mặt trời bằng 0 độ). Gọi là "hội diện" vì mặt trăng và mặt trời ở cùng một hướng đối với trái đất. Chu kỳ của điểm Sóc là khoảng 29,5 ngày. Ngày chứa điểm Sóc được gọi là ngày Sóc, và đó là ngày bắt đầu tháng âm lịch.

Trung khí là các điểm chia đường hoàng đạo thành 12 phần bằng nhau. Trong đó, bốn Trung khí giữa bốn mùa là đặc biệt nhất: Xuân phân (khoảng 20/3), Hạ chí (khoảng 22/6), Thu phân (khoảng 23/9) và Đông chí (khoảng 22/12).

anhtuan1066
10-05-08, 07:48 AM
Thì COUNIF bình thường thôi mà bạn...
COUNTIF($I$2:$I$21,$A$2:$F$10) : đếm có điều kiện từng em "màu xanh" trong vùng "màu đỏ"...
Thông thường COUNTIF chỉ ra 1 giá trị, nhưng COUNTIF kiểu này thì sẽ tạo ra 1 mãng với số lượng phần tử đúng bằng số lượng cell có trong vùng điều kiện $A$2:$F$10
Gõ công thức này vào 1 cell nào đó, Ctrl + Shift + Enter rồi bôi đên công thức trên thanh Formula, xong bấm F9 và đếm thử có tổng cộng bao nhiêu phần tử bên trong!
ANH TUẤN



Nhưng việc các bạn đã & đang làm, mình cho là rất giống với việc dùng công thức để dịch số ra chữ kia đấy!!!
Vẫn mong các bạn tiếp tục; Có ước muốn biến đá thành vàng mới có ngành hóa học như ngày nay;

Chúc các bạn không thành công cũng thành nhân!!

Ah... ko phải vậy đâu anh Sa... mục đích cuối cùng của tụi em vẫn là TẠO 1 TỜ LỊCH ĐƠN GIẢN bằng các công thức sẳn có... Âm lịch chỉ là cái thêm vào nếu có thể dc... (thừa thắng xông lên thôi)... ko có nó cũng ko sao, vì thật sự tụi em ko có ý định làm LỊCH!
Mến
ANH TUẤN

thuan1975
10-05-08, 12:21 PM
Ông bạn ơi.

tôi tưởng bài ví dụ là file Excel chứ. hóa ra lại là file có đuôi exe
Tôi chưa UnZip để dùng thử, nhưng nếu có ví dụ về lịch Âm/Dương bằng xls thì hay quá.
Tôi tham khảo với.
Không Code / Addin / Macro càng tốt.

Thân ái

boyxin
10-05-08, 12:26 PM
Ông bạn ơi.

tôi tưởng bài ví dụ là file Excel chứ. hóa ra lại là file có đuôi exe
Tôi chưa UnZip để dùng thử, nhưng nếu có ví dụ về lịch Âm/Dương bằng xls thì hay quá.
Tôi tham khảo với.
Không Code / Addin / Macro càng tốt.

Thân ái

- Cứ chạy phai exe đó đi, nó sẽ unzip ra cho bạn file excel trong D:\My Documents
- File exe này chẳng qua là trình nén ZIP tự bung thoai muh

- 100% là dùng các công thức dơn giản trong Excel để tạo lịch
- Có 1 tý xíu code là để hiện ngày và giờ hiện tại trên thanh tiêu đề thoai, không liên quan gì đến phàn tạo lịch

mtlove
08-08-08, 01:41 PM
Tôi đang tìm hiểu về kỹ thuật đổi từ ngày dương lịch sang ngày âm lịch, rất mong bạn có thể chia sẽ kinh nghiệm
Đây là địa chỉ của tôi: tranhonglinh41@gmail.com
rất mong nhận được sự giúp đỡ của bạn

ngoanvn
17-10-08, 08:41 AM
Không biết trong Excel có hàm nào để tìm ngày âm lịch khi biết ngày dương lịch không? Ai biết chỉ giùm! Cám ơn trước!

ndu96081631
17-10-08, 08:32 PM
Không biết trong Excel có hàm nào để tìm ngày âm lịch khi biết ngày dương lịch không? Ai biết chỉ giùm! Cám ơn trước!
Xin thưa là cho đến hiện giờ chắc chắn hỏng có... Chỉ có hàm tự tạo do các tác giã viết riêng thôi!
(Tìm trên Google)

dohuuthuc
18-10-08, 09:05 AM
Dùng hàm mod và hàm vlookup thì tìm ra được năm dương lịch sang năm âm lịch ,nhưng ngày và tháng thì phức tạp quá.
Gởi file kèm theo các bạn xem chút cho phong phú

ngoanvn
20-10-08, 08:49 AM
Cảm ơn bạn dohuthuc, nhưng ý tôi không phải vậy, ý tôi là tại ô A1 nhập "20/10/2008" (ngày, tháng, năm dương lịch), tại ô A2 nhập công thức để có kết quả là "22/09/2008 (ngày, tháng, năm âm lịch). Có ai biết chỉ giùm, rất cám ơn!

ThuNghi
20-10-08, 09:58 AM
Cảm ơn bạn dohuthuc, nhưng ý tôi không phải vậy, ý tôi là tại ô A1 nhập "20/10/2008" (ngày, tháng, năm dương lịch), tại ô A2 nhập công thức để có kết quả là "22/09/2008 (ngày, tháng, năm âm lịch). Có ai biết chỉ giùm, rất cám ơn!
Bạn xem thử theo link này, file này làm bằng công thức từ lúc nhập môn GPE.
http://www.giaiphapexcel.com/forum/showthread.php?p=8513#post8513

Apple2006
07-11-08, 01:19 PM
Bài này mình thấy hay lắm nhưng tại sao khi tải về máy rồi mở không lên vậy? chỉ mình mở ra sao nhe

ngo15
07-11-08, 02:04 PM
Tôi có file sưu tầm đây, bạn xem tạm