Hàm tự tạo để lấy số văn bản trong trường hợp TRUE và FALSE

Liên hệ QC

vc_đi chơi

Thành viên hoạt động
Tham gia
21/9/19
Bài viết
159
Được thích
32
Xin chào các anh/chị.
Em làm văn phòng hay phải cần lấy số văn bản.
Do đặc thù công việc nên em xin được giúp đỡ hàm tự tạo để lấy số văn bản:
=Laysovb(thời gian ban hành văn bản;TRUE;Ký tự cần chèn) trong trường hợp TRUE được thay bằng FALSE thì thời gian ban hành văn bản sẽ để trống
Em đưa ra ví dụ cụ thể như sau :
Thời gian ban hành văn bản là ô D1: 02/09/2020
Ký tự cần chèn là "VNXD"
* Sau khi sử dụng hàm =Laysovb(D1;TRUE;"VNXD") sẽ cho kết quả là 0902/2020/VNXD.
* Nếu thay TRUE bằng FALSE thì sau khi sử dụng hàm =Laysovb(D1;FALSE;"VNXD") sẽ cho kết quả là: ........../........../VNXD
Với "........."đủ để viết bốn chữ số khi viết bằng tay.
Rất mong được sự giúp đỡ từ phía các anh/chị trên GPE.
Em xin cảm ơn!
 
Lần chỉnh sửa cuối:
Xin chào các anh/chị.
Em làm văn phòng hay phải cần lấy số văn bản.
Do đặc thù công việc nên em xin được giúp đỡ hàm tự tạo để lấy số văn bản:
=Laysovb(thời gian ban hành văn bản;TRUE;Ký tự cần chèn) trong trường hợp TRUE được thay bằng FALSE thì thời gian ban hành văn bản sẽ để trống
Em đưa ra ví dụ cụ thể như sau :
Thời gian ban hành văn bản là ô D1: 02/09/2020
Ký tự cần chèn là "VNXD"
* Sau khi sử dụng hàm =Laysovb(D1;TRUE;"VNXD") sẽ cho kết quả là 0902/2020/VNXD.
* Nếu thay TRUE bằng FALSE thì sau khi sử dụng hàm =Laysovb(D1;FALSE;"VNXD") sẽ cho kết quả là: ........../........../VNXD
Với "........."đủ để viết bốn chữ số khi viết bằng tay.
Rất mong được sự giúp đỡ từ phía các anh/chị trên GPE.
Em xin cảm ơn!
Tôi thì làm thế này. Nếu muốn True thì công thức như sau:
Mã:
=TEXT(D1,"MMDD/YYYY") & "/VNXD"
Còn muốn False thì ghi thẳng ra luôn là: ........../........../VNXD
 
Lần chỉnh sửa cuối:
Tôi thì làm thế này. Nếu muốn True thì công thức như sau:
Mã:
=TEXT(D1,"DDMM/YYYY") & "/VNXD"
Còn muốn False thì ghi thẳng ra luôn là: ........../........../VNXD
Vâng cảm ơn anh!
Do đặc thù công việc nên em thấy nếu nó là một hàm thì sẽ tiện hơn.
 
Xin chào các anh/chị.
Em làm văn phòng hay phải cần lấy số văn bản.
Do đặc thù công việc nên em xin được giúp đỡ hàm tự tạo để lấy số văn bản:
=Laysovb(thời gian ban hành văn bản;TRUE;Ký tự cần chèn) trong trường hợp TRUE được thay bằng FALSE thì thời gian ban hành văn bản sẽ để trống
Em đưa ra ví dụ cụ thể như sau :
Thời gian ban hành văn bản là ô D1: 02/09/2020
Ký tự cần chèn là "VNXD"
* Sau khi sử dụng hàm =Laysovb(D1;TRUE;"VNXD") sẽ cho kết quả là 0902/2020/VNXD.
* Nếu thay TRUE bằng FALSE thì sau khi sử dụng hàm =Laysovb(D1;FALSE;"VNXD") sẽ cho kết quả là: ........../........../VNXD
Với "........."đủ để viết bốn chữ số khi viết bằng tay.
Rất mong được sự giúp đỡ từ phía các anh/chị trên GPE.
Em xin cảm ơn!
Thử vầy xem:
Chọn D1 rồi Format > Custom và định dạng thế này.
"Số: "mm""dd"/2020/VNXD"

Tại D1 = Today()

Hoặc = đến Cell chứa ngày ở chỗ nào đó.

Kết quả như dòng 4 (xem hình).

A_DD.GIF
 
Thử vầy xem:
Chọn D1 rồi Format > Custom và định dạng thế này.
"Số: "mm""dd"/2020/VNXD"

Tại D1 = Today()

Hoặc = đến Cell chứa ngày ở chỗ nào đó.

Kết quả như dòng 4 (xem hình).

View attachment 230609
Em dùng nối chuỗi trong văn bản, nếu định dạng vậy sẽ không thể được đúng không ạ?
 
...
* Sau khi sử dụng hàm =Laysovb(D1;TRUE;"VNXD") sẽ cho kết quả là 0902/2020/VNXD.
* Nếu thay TRUE bằng FALSE thì sau khi sử dụng hàm =Laysovb(D1;FALSE;"VNXD") sẽ cho kết quả là: ........../........../VNXD
...
Bạn có biết thế nào là tham số hàm hay không?
Trên thực tế, nếu bạn chỉ cần hơacj "ddmm/yyyy/VNXD" và "......../......../VNXD" thì hàm Laysovb chỉ cần 1 tham.
Function Laysovb(Optional d As Date = 0) As String
 
Xin chào các anh/chị.
Em làm văn phòng hay phải cần lấy số văn bản.
Do đặc thù công việc nên em xin được giúp đỡ hàm tự tạo để lấy số văn bản:
=Laysovb(thời gian ban hành văn bản;TRUE;Ký tự cần chèn) trong trường hợp TRUE được thay bằng FALSE thì thời gian ban hành văn bản sẽ để trống
Em đưa ra ví dụ cụ thể như sau :
Thời gian ban hành văn bản là ô D1: 02/09/2020
Ký tự cần chèn là "VNXD"
* Sau khi sử dụng hàm =Laysovb(D1;TRUE;"VNXD") sẽ cho kết quả là 0902/2020/VNXD.
* Nếu thay TRUE bằng FALSE thì sau khi sử dụng hàm =Laysovb(D1;FALSE;"VNXD") sẽ cho kết quả là: ........../........../VNXD
Với "........."đủ để viết bốn chữ số khi viết bằng tay.
Rất mong được sự giúp đỡ từ phía các anh/chị trên GPE.
Em xin cảm ơn!
Mã:
Function Laysovb(Ngay As Date, iText As String, Optional HasDay As Boolean = False)
  If HasDay = False Then
    Laysovb = "......../......../" & iText
  Else
    Laysovb = Format(Day(Ngay) * 100 + Month(Ngay), "0000") & "/" & Year(Ngay) & "/" & iText
  End If
End Function
Công thức ngoài Sheet
=Laysovb($D$1,"VN")
=Laysovb($D$1,"VN",1)
 
Bạn có biết thế nào là tham số hàm hay không?
Trên thực tế, nếu bạn chỉ cần hơacj "ddmm/yyyy/VNXD" và "......../......../VNXD" thì hàm Laysovb chỉ cần 1 tham.
Function Laysovb(Optional d As Date = 0) As String
Dạ! Em chưa biết và hiểu nhiều về excel.
Có gì mong anh chỉ bảo.
Bài đã được tự động gộp:

Mã:
Function Laysovb(Ngay As Date, iText As String, Optional HasDay As Boolean = False)
  If HasDay = False Then
    Laysovb = "......../......../" & iText
  Else
    Laysovb = Format(Day(Ngay) * 100 + Month(Ngay), "0000") & "/" & Year(Ngay) & "/" & iText
  End If
End Function
Công thức ngoài Sheet
=Laysovb($D$1,"VN")
=Laysovb($D$1,"VN",1)
Em cảm ơn anh hieucd nhiều!
 
Mã:
Function Laysovb(Ngay As Date, iText As String, Optional HasDay As Boolean = False)
  If HasDay = False Then
    Laysovb = "......../......../" & iText
  Else
    Laysovb = Format(Day(Ngay) * 100 + Month(Ngay), "0000") & "/" & Year(Ngay) & "/" & iText
  End If
End Function
Công thức ngoài Sheet
=Laysovb($D$1,"VN")
=Laysovb($D$1,"VN",1)
Anh ơi, hàm anh giúp =Laysovb($D$1,"VN",1) cái phần thời gian ở vị trí $D$1 bị đảo ngược ạ!
Ở D1 là thời gian: ngày/tháng/năm
Nếu như em mong muốn ở bài #1 đã nêu thì khi dùng hàm =Laysovb($D$1,"VN",1) sẽ cho kết quả : tháng ngày/năm/VN nhưng như anh giúp trên sẽ là : ngày tháng/năm/VN
Anh sửa lại giúp em chút để khi dùng hàm =Laysovb($D$1,"VN",1) thì sẽ cho kết quả là: tháng ngày/năm/VN được không ạ!
Em cảm ơn anh!
 
Anh ơi, hàm anh giúp =Laysovb($D$1,"VN",1) cái phần thời gian ở vị trí $D$1 bị đảo ngược ạ!
Ở D1 là thời gian: ngày/tháng/năm
Nếu như em mong muốn ở bài #1 đã nêu thì khi dùng hàm =Laysovb($D$1,"VN",1) sẽ cho kết quả : tháng ngày/năm/VN nhưng như anh giúp trên sẽ là : ngày tháng/năm/VN
Anh sửa lại giúp em chút để khi dùng hàm =Laysovb($D$1,"VN",1) thì sẽ cho kết quả là: tháng ngày/năm/VN được không ạ!
Em cảm ơn anh!
Bạn xem lại ngày tháng trong CP thử xem.
 
Anh ơi, hàm anh giúp =Laysovb($D$1,"VN",1) cái phần thời gian ở vị trí $D$1 bị đảo ngược ạ!
Ở D1 là thời gian: ngày/tháng/năm
Nếu như em mong muốn ở bài #1 đã nêu thì khi dùng hàm =Laysovb($D$1,"VN",1) sẽ cho kết quả : tháng ngày/năm/VN nhưng như anh giúp trên sẽ là : ngày tháng/năm/VN
Anh sửa lại giúp em chút để khi dùng hàm =Laysovb($D$1,"VN",1) thì sẽ cho kết quả là: tháng ngày/năm/VN được không ạ!
Em cảm ơn anh!

Thì sửa lại hàm của HieuCD theo ý bạn đi. Hãy "thông minh" lên một chút chứ:):):)

Mã:
Function Laysovb(Ngay As Date, iText As String, Optional HasDay As Boolean = False)
  If HasDay = False Then
    Laysovb = "......../......../" & iText
  Else
    Laysovb = Format(Right("0" &  Month(Ngay),2) + Right("0" & Day(Ngay),2)) , "0000") & "/" & Year(Ngay) & "/" & iText
  End If
End Function
 
Thì sửa lại hàm của HieuCD theo ý bạn đi. Hãy "thông minh" lên một chút chứ:):):)

Mã:
Function Laysovb(Ngay As Date, iText As String, Optional HasDay As Boolean = False)
  If HasDay = False Then
    Laysovb = "......../......../" & iText
  Else
    Laysovb = Format(Right("0" &  Month(Ngay),2) + Right("0" & Day(Ngay),2)) , "0000") & "/" & Year(Ngay) & "/" & iText
  End If
End Function
Em copy code vào thì thấy báo tô nền đỏ là do đâu vậy anh?
6666.png
 
Em copy code vào thì thấy báo tô nền đỏ là do đâu vậy anh?
Do thừa ngoặc ) sau Right thứ 2.
Mà đã Right + Right thì cần gì Format nữa?
--------
Trong đoạn trích trong bài của tôi bạn hoán vị ̣(đổi chỗ) Day và Month cho nhau là được. Suy nghĩ chút đi.
 
Laysovb =Right("0" & Month(Ngay),2) & Right("0" & Day(Ngay),2)) & "/" & Year(Ngay) & "/" & iText
 
Anh ơi, hàm anh giúp =Laysovb($D$1,"VN",1) cái phần thời gian ở vị trí $D$1 bị đảo ngược ạ!
Ở D1 là thời gian: ngày/tháng/năm
Nếu như em mong muốn ở bài #1 đã nêu thì khi dùng hàm =Laysovb($D$1,"VN",1) sẽ cho kết quả : tháng ngày/năm/VN nhưng như anh giúp trên sẽ là : ngày tháng/năm/VN
Anh sửa lại giúp em chút để khi dùng hàm =Laysovb($D$1,"VN",1) thì sẽ cho kết quả là: tháng ngày/năm/VN được không ạ!
Em cảm ơn anh!
Thì chỉnh
Laysovb = Format(Month(Ngay) * 100 + Day(Ngay) , "0000") & "/" & Year(Ngay) & "/" & iText

tháng trước
 
Web KT
Back
Top Bottom