Giấu cột với hàm IF (5 người xem)

Liên hệ QC

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

thanhems

Thành viên mới
Tham gia
9/6/09
Bài viết
29
Được thích
2
Em không rành VBA lắm, nhưng mày mò trên mạng thì tìm được công thức:

If Range("u1").Value = 1 Then
Columns("R:U").EntireColumn.Hidden = True
Else
Columns("R:U").EntireColumn.Hidden = False
End If

Nếu giá trị của U1 = 1 thì cột R và cột U sẽ bị ẩn đi,
Câu hỏi em là xin mọi người chỉ dùm, làm cách nào để khi giá trị U1 đó là 1, cột bị ẩn là 2 cột cách nhau, không liền nhau, như là em muốn ẩn cột R và cột W thì đổi công thức thế nào ạ.
 
Em không rành VBA lắm, nhưng mày mò trên mạng thì tìm được công thức:

If Range("u1").Value = 1 Then
Columns("R:U").EntireColumn.Hidden = True
Else
Columns("R:U").EntireColumn.Hidden = False
End If

Nếu giá trị của U1 = 1 thì cột R và cột U sẽ bị ẩn đi,
Câu hỏi em là xin mọi người chỉ dùm, làm cách nào để khi giá trị U1 đó là 1, cột bị ẩn là 2 cột cách nhau, không liền nhau, như là em muốn ẩn cột R và cột W thì đổi công thức thế nào ạ.
Cũng code như trên.
thay: Columns("R:U").EntireColumn.Hidden = True bằng
Columns("R:R").EntireColumn.Hidden = True
Columns("W:W").EntireColumn.Hidden = True
và thay: Columns("R:U").EntireColumn.Hidden = False bằng:
Columns("R:R").EntireColumn.Hidden = False
Columns("W:W").EntireColumn.Hidden = False
 
Upvote 0
Em không rành VBA lắm, nhưng mày mò trên mạng thì tìm được công thức:

If Range("u1").Value = 1 Then
Columns("R:U").EntireColumn.Hidden = True
Else
Columns("R:U").EntireColumn.Hidden = False
End If

Nếu giá trị của U1 = 1 thì cột R và cột U sẽ bị ẩn đi,
Câu hỏi em là xin mọi người chỉ dùm, làm cách nào để khi giá trị U1 đó là 1, cột bị ẩn là 2 cột cách nhau, không liền nhau, như là em muốn ẩn cột R và cột W thì đổi công thức thế nào ạ.
Thử sử dụng dòng này xem:
Range("R1,W1").EntireColumn.Hidden = True
 
Upvote 0
Em không rành VBA lắm, nhưng mày mò trên mạng thì tìm được công thức:

If Range("u1").Value = 1 Then
Columns("R:U").EntireColumn.Hidden = True
Else
Columns("R:U").EntireColumn.Hidden = False
End If

Nếu giá trị của U1 = 1 thì cột R và cột U sẽ bị ẩn đi,
Câu hỏi em là xin mọi người chỉ dùm, làm cách nào để khi giá trị U1 đó là 1, cột bị ẩn là 2 cột cách nhau, không liền nhau, như là em muốn ẩn cột R và cột W thì đổi công thức thế nào ạ.
1 dòng code duy nhất:
PHP:
Range("R:R, W:W").EntireColumn.Hidden = (Range("U1").Value = 1)
 
Upvote 0
Bác ndu quả thật cao thủ, nhưng xin bác giúp dùm cụ thể hơn, em không rành VBA mà hơi đu đeo, em copy cái dòng của bác sao nó ko chạy, nó báo lỗi ở "U1", mà đoạn mã bác có cần thêm gì không bác hay chỉ 1 dòng duy nhất vậy.
1 dòng code duy nhất:
PHP:
Range("R:R, W:W").EntireColumn.Hidden = (Range("U1").Value = 1)
 
Upvote 0
Bác ndu quả thật cao thủ, nhưng xin bác giúp dùm cụ thể hơn, em không rành VBA mà hơi đu đeo, em copy cái dòng của bác sao nó ko chạy, nó báo lỗi ở "U1", mà đoạn mã bác có cần thêm gì không bác hay chỉ 1 dòng duy nhất vậy.
Thử chép cái này vào 1 sheet nào đó rồi nhập cái gì đó vào ô U1 để nghiên cứu:
Private Sub Worksheet_Change(ByVal Target As Range)
Range("R:R, W:W").EntireColumn.Hidden = (Range("U1").Value = 1)
End Sub
 
Upvote 0
mà đoạn mã bác có cần thêm gì không bác hay chỉ 1 dòng duy nhất vậy.
Đương nhiên chỉ thêm Tên Sub ở trên và dòng End Sub ở dưới thôi
Chẳng hạn:
PHP:
Sub Test()
  Range("R:R, W:W").EntireColumn.Hidden = (Range("U1").Value = 1)
End Sub
Code này chèn vào 1 Module
Bác ndu quả thật cao thủ, nhưng xin bác giúp dùm cụ thể hơn, em không rành VBA mà hơi đu đeo, em copy cái dòng của bác sao nó ko chạy, nó báo lỗi ở "U1".
Bạn đã làm thế nào thì cứ đưa nguyên file lên đây mới biết nguyên nhân bạn à
 
Upvote 0
Cám ơn bác Ndu, code của bác chạy rồi, nhưng muốn nó chạy theo thời gian thực (real-time) thì làm thế nào ạ, code của bác mỗi lần muốn nó chạy thì phải vào Tools>Macro>Run MAcro nó mới chạy, em muốn mỗi lần nhập 1 thì cột bị ẩn, xóa 1 thì tự khắc cột nó hiện ra
 
Upvote 0
Cám ơn bác Ndu, code của bác chạy rồi, nhưng muốn nó chạy theo thời gian thực (real-time) thì làm thế nào ạ, code của bác mỗi lần muốn nó chạy thì phải vào Tools>Macro>Run MAcro nó mới chạy, em muốn mỗi lần nhập 1 thì cột bị ẩn, xóa 1 thì tự khắc cột nó hiện ra
- Click phải vào tên sheet (ở sheet tab) chọn View code
- Chèn code này vào khung bên phải:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$U$1" Then
    Range("R:R, W:W").EntireColumn.Hidden = (Target = 1)
  End If
End Sub
- Bấm Alt + Q về bảng tính
- Giờ thử gõ số 1 vào cell U1 thử xem
 
Upvote 0
Cám ơn bác vì đã trả lời rất nhanh, của em có 3 trường hợp cần giấu cột, em copy thêm cái hàm IF của bác vào thì trường hợp 3 chạy, 1 và 2 không chạy, bác có thể xem lại đoạn code dưới dùm em với

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$O$1" Then
Range("R:U").EntireColumn.Hidden = (Target = 1)
End If

If Target.Address = "$O$1" Then
Range("P:Q, T:U").EntireColumn.Hidden = (Target = 2)
End If

If Target.Address = "$O$1" Then
Range("P:Q, R:S").EntireColumn.Hidden = (Target = 3)
End If
End Sub
 
Upvote 0
Cám ơn bác vì đã trả lời rất nhanh, của em có 3 trường hợp cần giấu cột, em copy thêm cái hàm IF của bác vào thì trường hợp 3 chạy, 1 và 2 không chạy, bác có thể xem lại đoạn code dưới dùm em với

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$O$1" Then
Range("R:U").EntireColumn.Hidden = (Target = 1)
End If

If Target.Address = "$O$1" Then
Range("P:Q, T:U").EntireColumn.Hidden = (Target = 2)
End If

If Target.Address = "$O$1" Then
Range("P:Q, R:S").EntireColumn.Hidden = (Target = 3)
End If
End Sub
Hình như phải thế này chứ:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$O$1" Then
        Select Case [O1].Value
            Case 1
                Cells.EntireColumn.Hidden = False
                Range("R:U").EntireColumn.Hidden = True
            Case 2
                Cells.EntireColumn.Hidden = False
                Range("P:Q, T:U").EntireColumn.Hidden = True
            Case 3
                Cells.EntireColumn.Hidden = False
                Range("P:Q, R:S").EntireColumn.Hidden = True
        End Select
    End If
End Sub
Làm đại, trật ...làm lại
Thân
 
Upvote 0
Bác Concogia ơi giúp em với,

Theo code bác đưa ra ở trên, nếu ô O1 giá trị 1 hoặc 2 hoặc 3 thì các cột sẽ tự động ẩn, nhưng vấn đề phát sinh của em là ô O1 em dùng hàm IF để định giá trị 1,2,3, cụ thể là
O1=(IF(RIGHT($A$7,2)="congty1",1,IF(RIGHT($A$7,2)="congty2",2,IF(RIGHT($A$7,2)="congty3",3))).
Khi ở ô A7 là công ty nào thì tương ứng ô O1 sẽ là giá trị 1 hoặc 2 hặoc 3 và đoạn code ẩn của bác sẽ ẩn cột, nhưng vấn đề là khi em thử thay tên công ty ở ô A7, lúc đó giá trị ô O1 tự động đổi theo nhưng cột không ẩn, mà phải nhấp chuột vào ô O1 thì cột mới ẩn. Bác có cách nào cho nó tự động được không ạ.
 
Upvote 0
thầy ndu96081631 có thể chỉ giúp em hiểu rõ hơn về hàm Math và Index, em không biết ứng dụng của 2 hàm này trong trường hợp nào thì dùng. có thể cho em ví dụ cụ thể được không.
Em biết thầy là cao thủ về ễcl nên rất khâm phục, mong thầy có thể chỉ rõ để em hiểu hết những công dụng của 2 hàm trên.
Thanks thầy nhiều.
 
Upvote 0
Bác Concogia ơi giúp em với,

Theo code bác đưa ra ở trên, nếu ô O1 giá trị 1 hoặc 2 hoặc 3 thì các cột sẽ tự động ẩn, nhưng vấn đề phát sinh của em là ô O1 em dùng hàm IF để định giá trị 1,2,3, cụ thể là
O1=(IF(RIGHT($A$7,2)="congty1",1,IF(RIGHT($A$7,2)="congty2",2,IF(RIGHT($A$7,2)="congty3",3))).
Khi ở ô A7 là công ty nào thì tương ứng ô O1 sẽ là giá trị 1 hoặc 2 hặoc 3 và đoạn code ẩn của bác sẽ ẩn cột, nhưng vấn đề là khi em thử thay tên công ty ở ô A7, lúc đó giá trị ô O1 tự động đổi theo nhưng cột không ẩn, mà phải nhấp chuột vào ô O1 thì cột mới ẩn. Bác có cách nào cho nó tự động được không ạ.
Sửa tí tẹo:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$7" Then
        Select Case [O1].Value
            Case 1
                Cells.EntireColumn.Hidden = False
                Range("R:U").EntireColumn.Hidden = True
            Case 2
                Cells.EntireColumn.Hidden = False
                Range("P:Q, T:U").EntireColumn.Hidden = True
            Case 3
                Cells.EntireColumn.Hidden = False
                Range("P:Q, R:S").EntireColumn.Hidden = True
        End Select
    End If
End Sub
Công thức ở [O1] zì thôi:
Chữ Congty1, Congty2....không có dấu nháy kép nhé
Híc
 
Upvote 0
Thật làm phiền bác quá, vì em sợ bác mất thời gian với thằng ko biết gì như em nên em hỏi ngăn gọn, khiến cho vấn đề không giải quyết tới nơi
Giá trị/nội dung của tên 3 công ty mà em mua hàng như sau:
To: CÔNG TY OJITEX(VIETNAM) Co., LTD
To: CÔNG TY BAO BÌ YUEN-FOONG-YU
To: CÔNG TY BAO BÌ CHENGNENG

Mà không phải lúc nào giá trị cũng như nhau, có khi là không có chữ công ty, nói chung là dù là giá trị nào thì kết thúc ba thằng đó cũng là TD, YU và NG, nên em mới dùng hàm IF và Right để lấy 2 chữ cuối và đặt giá trị 1, 2 và 3 để ẩn cột,
Em rất ngại khi phải làm phiền bác. Em đã thử thay

Select Case [O1].Value
thành
Select Case [O1].Text
Select Case [O1].txt
Select Case [O1].Content

và thay
Case 1
thành
Case TD
Case NG

nhưng nó không chạy bác ơi. bác có thể chỉnh code dùm em với.
 
Lần chỉnh sửa cuối:
Upvote 0
Thật làm phiền bác quá, vì em sợ bác mất thời gian với thằng ko biết gì như em nên em hỏi ngăn gọn, khiến cho vấn đề không giải quyết tới nơi
Giá trị/nội dung của tên 3 công ty mà em mua hàng như sau:
To: CÔNG TY OJITEX(VIETNAM) Co., LTD
To: CÔNG TY BAO BÌ YUEN-FOONG-YU
To: CÔNG TY BAO BÌ CHENGNENG

Mà không phải lúc nào giá trị cũng như nhau, có khi là không có chữ công ty, nói chung là dù là giá trị nào thì kết thúc ba thằng đó cũng là TD, YU và NG, nên em mới dùng hàm IF và Right để lấy 2 chữ cuối và đặt giá trị 1, 2 và 3 để ẩn cột,
Em rất ngại khi phải làm phiền bác. Em đã thử thay

Select Case [O1].Value
thành
Select Case [O1].Text
Select Case [O1].txt
Select Case [O1].Content

và thay
Case 1
thành
Case TD
Case NG

nhưng nó không chạy bác ơi. bác có thể chỉnh code dùm em với.
1) Nếu chỉ có 3 dạng tên công ty như thế, ta chỉ cần lấy 1 ký tự cuối là đủ chứ đâu cần 2 vì các ký tự đuôi đâu có phần nào giống nhau
2) Nếu bạn chỉ cần thay đổi ở cell [A7] thì cần gì cell [O1] làm trung gian, ta lấy ngay ký tự cuối của cell [A7] làm điều kiện ( nếu bạn thích lấy 2 ký tự thì cứ sửa vào code nhé), còn ký tự nào là trường hợp 1, 2, 3 bạn xem lại cho đúng ý mình thôi
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$7" Then
        Select Case Right(Target, 1)
            Case "D"
                Cells.EntireColumn.Hidden = False
                Range("R:U").EntireColumn.Hidden = True
            Case "U"
                Cells.EntireColumn.Hidden = False
                Range("P:Q, T:U").EntireColumn.Hidden = True
            Case "G"
                Cells.EntireColumn.Hidden = False
                Range("P:Q, R:S").EntireColumn.Hidden = True
        End Select
    End If
End Sub
Đừng ngại, không có gì phiền đâu, cùng nhau học tập mà bạn
Thân
 
Upvote 0
Cám ơn bác nhiều lắm, nó chạy rồi, em thay (Target, 2) và dùng 2 chữ số vẫn chạy, em dùng 2 chữ cuối của tên công ty, vì còn hàm tính tiền nữa, nhêều hàm dùng 2 chữ nên giờ phải theo.
Cám ơn bác rất nhiều.
 
Upvote 0
Web KT

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

Trả lời
42
Đọc
17K
Back
Top Bottom