Tô màu theo điều kiện với file đính kèm ? (1 người xem)

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

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,894
Được thích
1,218
Xin chào tất cả mọi người,
Rất mong được mọi người giúp đỡ cho tôi về một vấn đề đã nêu trong file kèm này.
Thanks you very much
 

File đính kèm

Làm được nhưng rườm rà chút nhé.
điều kiện là các mã ở bảng 1 không được trùng nhau,
 

File đính kèm

Làm được nhưng rườm rà chút nhé.
điều kiện là các mã ở bảng 1 không được trùng nhau,

Cảm ơn bạn rất nhiều,cách của bạn tôi rất khó có thể áp dụng được.
Nếu công thức đơn thuần không làm được thì có thể dùng macro cũng được ạ.
Rất mong tiếp tục được bạn và mọi người đưa ra nhiều giải pháp khác.
Thanks you very much!
 

File đính kèm

tôi chỉ làm ra được như bảng 2 thôi , muốn làm ra bảng 3 thì phải đi kiếm mấy bạn giỏi VBA
 

File đính kèm

Cho dù có save thành .xls bạn cũng xem hok có được đâu (bởi vì lý do gì thì bạn đã từng biết mà...).haha...Thế có muốn xem công thức "Khủng" của cha "Chim Hồng" dùng trong ấy hok zậy???
Xem được mà cha nội. Đợt trước ông save as thành *xls thì xem được. Đương nhiên là muốn soi thánh soi thật kỹ chứ.
 
Vậy đưa công thức của cha "Chim Hồng" lên nha. Còn việc bỏ vô cho nó tô tô vẽ vẽ thì bạn tự xứ nhá...Biếng up file lên lắm
P/s: Xin phép chú "Chim Hồng" cho mình được chia sẽ công thức khủng của bạn cho bạn giangleloi soi xét nhé!
Mã:
=IF($E6<>"", SUM(MMULT(--(1*TRANSPOSE(MID(SUBSTITUTE($E6,"&",REPT(" ",99)), (ROW(OFFSET($A$1,,,LEN($E6)-LEN(SUBSTITUTE($E6,"&",""))+1))-1)*99+1,99))=Sheet1!$B$4:$B$1000),SIGN(ROW(OFFSET($A$1,,,LEN($E6)-LEN(SUBSTITUTE($E6,"&",""))+1)))))<LEN($E6)-LEN(SUBSTITUTE($E6,"&",""))+1)

Cảm ơn các bạn rất nhiều vì đã hỗ trợ cho tôi, kết quả làm bằng Macro và CF đều đúng cả.
Không ngờ mọi người giỏi quá.
Mong chờ còn có thêm giải pháp cho bảng 3 nữa
------------
Tuy nhiên tôi có chút thắc mắc là với công thức ở trên copy ra ngoài cell thì phải sử dụng Ctrl+Shift+Enter thì mới cho ra kết quả còn đưa vào CF thì lại lài công thức thường mà vẫn hoạt động được vậy, phiền các bạn giải thích giúp với.
Thanks you very much!
 
Mong chờ còn có thêm giải pháp cho bảng 3 nữa
Nói chung vô topic này cũng chém gió nhiều quá, nhậu về buồn ngủ viết cho bạn mấy dòng cho tỉnh:(Bạn biết Macro chắc cũng biết xài)
Mã:
Sub ToMau()
Dim Arr(), I, J, Tem, lr
With Sheet2
.[G6:G10000].Font.Color = vbBlack
lr = Sheet1.Range("B" & Rows.Count).End(3).Row
Arr = Range(.[G6], .[G65000].End(3)).Value
  For I = 1 To UBound(Arr)
   Tem = Split(Arr(I, 1), " & ")
    For J = 0 To UBound(Tem)
     If Application.WorksheetFunction.CountIf(Sheet1.Range("B4:B" & lr), Tem(J)) = 0 Then
        .Range("G" & I + 5).Characters(InStr(Arr(I, 1), Tem(J)), Len(Tem(J))).Font.Color = vbRed
     End If
    Next
  Next
End With
End Sub
P/s: Bạn chạy thử, sai cứ la lên vì tui cũng chưa có test.
 
Nói chung vô topic này cũng chém gió nhiều quá, nhậu về buồn ngủ viết cho bạn mấy dòng cho tỉnh:(Bạn biết Macro chắc cũng biết xài)
Mã:
Sub ToMau()
Dim Arr(), I, J, Tem, lr
With Sheet2
.[G6:G10000].Font.Color = vbBlack
lr = Sheet1.Range("B" & Rows.Count).End(3).Row
Arr = Range(.[G6], .[G65000].End(3)).Value
  For I = 1 To UBound(Arr)
   Tem = Split(Arr(I, 1), " & ")
    For J = 0 To UBound(Tem)
     If Application.WorksheetFunction.CountIf(Sheet1.Range("B4:B" & lr), Tem(J)) = 0 Then
        .Range("G" & I + 5).Characters(InStr(Arr(I, 1), Tem(J)), Len(Tem(J))).Font.Color = vbRed
     End If
    Next
  Next
End With
End Sub
P/s: Bạn chạy thử, sai cứ la lên vì tui cũng chưa có test.

Tôi đã test kết quả rất OK bạn ah xin cảm ơn bạn nhiều,đúng là một siêu cao thủ.
Tuy nhiên tôi cũng không hiểu gì về code nên trong điều kiện nào nó không được như ý tôi cũng không thể biết được.
Nếu bạn hoặc ai đó hiểu biết về đoạn mã trên nếu không phiền mong được giải thích để tôi hiểu được phần nào thì tốt biết bao.
Thanks you very much!
 
Tôi đã test kết quả rất OK bạn ah xin cảm ơn bạn nhiều,đúng là một siêu cao thủ.
Tuy nhiên tôi cũng không hiểu gì về code nên trong điều kiện nào nó không được như ý tôi cũng không thể biết được.
Nếu bạn hoặc ai đó hiểu biết về đoạn mã trên nếu không phiền mong được giải thích để tôi hiểu được phần nào thì tốt biết bao.
Thanks you very much!

chỉ có những siêu cao thủ mới nghĩ ra được đoạn code trên thôi bạn à , nếu bạn có chỗ nào không hiểu thì chỉ có thể liên hệ trực tiếp với siêu cao thủ này mới mong được giải đáp thôi
 
Tôi đã test kết quả rất OK bạn ah xin cảm ơn bạn nhiều,đúng là một siêu cao thủ.
Tuy nhiên tôi cũng không hiểu gì về code nên trong điều kiện nào nó không được như ý tôi cũng không thể biết được.
Nếu bạn hoặc ai đó hiểu biết về đoạn mã trên nếu không phiền mong được giải thích để tôi hiểu được phần nào thì tốt biết bao.
Thanks you very much!
Cũng đâu có gì đâu bạn. Nguyên một dãy số bên cột B (từ B4 trở xuống) sheet1 là gốc. Sau khi tách từng dòng ở sheet2 theo dấu "&", nếu số nào không có trong cột B sheet1 thì sẽ tô màu.
 
Nói chung vô topic này cũng chém gió nhiều quá, nhậu về buồn ngủ viết cho bạn mấy dòng cho tỉnh:(Bạn biết Macro chắc cũng biết xài)
Mã:
Sub ToMau()
Dim Arr(), I, J, Tem, lr
With Sheet2
.[G6:G10000].Font.Color = vbBlack
lr = Sheet1.Range("B" & Rows.Count).End(3).Row
Arr = Range(.[G6], .[G65000].End(3)).Value
  For I = 1 To UBound(Arr)
   Tem = Split(Arr(I, 1), " & ")
    For J = 0 To UBound(Tem)
     If Application.WorksheetFunction.CountIf(Sheet1.Range("B4:B" & lr), Tem(J)) = 0 Then
        .Range("G" & I + 5).Characters(InStr(Arr(I, 1), Tem(J)), Len(Tem(J))).Font.Color = vbRed
     End If
    Next
  Next
End With
End Sub
P/s: Bạn chạy thử, sai cứ la lên vì tui cũng chưa có test.

Xin hỏi nếu file của tôi có nhiều sheets
ví dụ: sheet2,sheet3,sheet4,sheet5 đều có cấu trúc giống như sheet2 và chỉ có duy nhất sheet1 chứa list mã số
thì code trên áp dụng để kiểm tra cho cá sheet từ 2->5 sẽ phải viết như thế nào ạ, hay mỗi sheets tôi phải sử dụng 1 code đó.
Rất mong được bạn và mọi người hỗ trợ thêm.
Thanks you very much,
 
P/s: còn anh "Chinh Hồng" sao không trả lời #12 cho bạn í đi...--=0--=0--=0 Chạy đâu cho thoát...
[/COLOR]
Ờ ha. Nhắc mới nhớ, sao chưa thấy anh ấy giải thích nhỉ, nhìn công thức mà hông hiểu gì ráo. Nếu hông phiền xin nhờ tác giả "Chim hồng" hay "ông trùm" giải thích công thức #11 giúp với.
 
Xác nhận lại ý trên: Chính xác là phải liên lạc lại với anh ấy...nhé!

P/s: còn anh "Chinh Hồng" sao không trả lời #12 cho bạn í đi...--=0--=0--=0 Chạy đâu cho thoát...
[/COLOR]
bạn phải biết là khi ngồi lên con Cam Rỳ thì sao còn muốn cưỡi Giấc mơ Trung Hoa nữa ? đã có siêu cao thủ làm ra được bảng 3 rồi thì tôi biết thân biết phận xếp xó ngồi im thôi chứ trả lời gì nữa
 
bạn phải biết là khi ngồi lên con Cam Rỳ thì sao còn muốn cưỡi Giấc mơ Trung Hoa nữa ? đã có siêu cao thủ làm ra được bảng 3 rồi thì tôi biết thân biết phận xếp xó ngồi im thôi chứ trả lời gì nữa

Cảm ơn bạn đã quan tâm,đúng là bảng 3 sẽ chi tiết hơn nhưng tùy trường hợp để áp dụng bạn ah.
nhất là đối với công thức dẫu sao cũng không cần thiết lập chế độ cho macro hoạt động lên bao giờ cũng ngon lành hơn là dùng macro
rất mong bạn đóng góp ý kiên.
Các bạn thật vui tính.
 
Xin hỏi nếu file của tôi có nhiều sheets
ví dụ: sheet2,sheet3,sheet4,sheet5 đều có cấu trúc giống như sheet2 và chỉ có duy nhất sheet1 chứa list mã số
thì code trên áp dụng để kiểm tra cho cá sheet từ 2->5 sẽ phải viết như thế nào ạ, hay mỗi sheets tôi phải sử dụng 1 code đó.
Rất mong được bạn và mọi người hỗ trợ thêm.
Thanks you very much,
Nhiều sheet thì cần chỉnh lại code. Nhưng mà có điều sao bạn không nói từ đầu, với lại có cấu trúc như sheet2, tức là bảng 3 cũng nằm y chang như vậy hả. (Nếu khác thì gửi lại file 1 lần nữa, code luôn 1 lần, chứ ngại viết nữa rồi sửa nữa lắm.)
bạn phải biết là khi ngồi lên con Cam Rỳ thì sao còn muốn cưỡi Giấc mơ Trung Hoa nữa ? đã có siêu cao thủ làm ra được bảng 3 rồi thì tôi biết thân biết phận xếp xó ngồi im thôi chứ trả lời gì nữa
"Chàng" đừng có nói thế. "Chàng" mà viết code thì cái code trên của "thiếp" bỏ sọt sớm thôi.
 
Lần chỉnh sửa cuối:
Nhiều sheet thì cần chỉnh lại code. Nhưng mà có điều sao bạn không nói từ đầu, với lại có cấu trúc như sheet2, tức là bảng 3 cũng nằm y chang như vậy hả. (Nếu khác thì gửi lại file 1 lần nữa, code luôn 1 lần, chứ ngại viết nữa rồi sửa nữa lắm.)

Đúng vậy bạn ah, từ sheet2 đến 5 về định dạng cấu trúc gống hệt nhau chỉ khác tên sheet thôi.
Tôi cũng không ngờ đến vấn đề này,khi muốn áp dụng thì mới thấy có điều cần thắc mắc, rất mong bạn thông cảm và giúp đỡ.
 
Đúng vậy bạn ah, từ sheet2 đến 5 về định dạng cấu trúc gống hệt nhau chỉ khác tên sheet thôi.
Tôi cũng không ngờ đến vấn đề này,khi muốn áp dụng thì mới thấy có điều cần thắc mắc, rất mong bạn thông cảm và giúp đỡ.
Thế bạn thử lại với cái này xem sao:
Mã:
Sub ToMau()
Dim Arr(), Ws, I, J, Tem, lr
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "Sheet1" Then
With Ws
.[G6:G10000].Font.Color = vbBlack
lr = Sheet1.Range("B" & Rows.Count).End(3).Row
Arr = .Range(.[G6], .[G65000].End(3)).Value
  For I = 1 To UBound(Arr)
   Tem = Split(Arr(I, 1), " & ")
    For J = 0 To UBound(Tem)
     If Application.WorksheetFunction.CountIf(Sheet1.Range("B4:B" & lr), Tem(J)) = 0 Then
        .Range("G" & I + 5).Characters(InStr(Arr(I, 1), Tem(J)), Len(Tem(J))).Font.Color = vbRed
     End If
    Next
  Next
End With
End If
Next Ws
End Sub
P/s: Trường hợp nếu cột G có 1 dòng dữ liệu là sẽ bị lỗi đấy nha.
 
Lần chỉnh sửa cuối:
Thế bạn thử lại với cái này xem sao:
Mã:
Sub ToMau()
Dim Arr(), Ws, I, J, Tem, lr
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "Sheet1" Then
With Ws
.[G6:G10000].Font.Color = vbBlack
lr = Sheet1.Range("B" & Rows.Count).End(3).Row
Arr = .Range(.[G6], .[G65000].End(3)).Value
  For I = 1 To UBound(Arr)
   Tem = Split(Arr(I, 1), " & ")
    For J = 0 To UBound(Tem)
     If Application.WorksheetFunction.CountIf(Sheet1.Range("B4:B" & lr), Tem(J)) = 0 Then
        .Range("G" & I + 5).Characters(InStr(Arr(I, 1), Tem(J)), Len(Tem(J))).Font.Color = vbRed
     End If
    Next
  Next
End With
End If
Next Ws
End Sub
P/s: Trường hợp nếu cột G có 1 dòng dữ liệu là sẽ bị lỗi đấy nha.

cột G có 1 dòng dữ liệu hay 0 dòng là quyền của người dùng , tại sao siêu cao thủ nỡ đẫy trách nhiệm qua cho họ vẩy ?
 
Thế bạn thử lại với cái này xem sao:
Mã:
Sub ToMau()
Dim Arr(), Ws, I, J, Tem, lr
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "Sheet1" Then
With Ws
.[G6:G10000].Font.Color = vbBlack
lr = Sheet1.Range("B" & Rows.Count).End(3).Row
Arr = .Range(.[G6], .[G65000].End(3)).Value
  For I = 1 To UBound(Arr)
   Tem = Split(Arr(I, 1), " & ")
    For J = 0 To UBound(Tem)
     If Application.WorksheetFunction.CountIf(Sheet1.Range("B4:B" & lr), Tem(J)) = 0 Then
        .Range("G" & I + [COLOR=#ff0000][B]5[/B][/COLOR]).Characters(InStr(Arr(I, 1), Tem(J)), Len(Tem(J))).Font.Color = vbRed
     End If
    Next
  Next
End With
End If
Next Ws
End Sub
P/s: Trường hợp nếu cột G có 1 dòng dữ liệu là sẽ bị lỗi đấy nha.
Quả thực là rất nhanh ,, xin cảm ơn bạn rất nhiều.
Vậy trường hợp lỗi như bạn cảnh báo chẳng lẽ không có giải pháp nào khắc phục sao?
Xin hỏi bạn số 5 trong đoạn code có nghĩa là vậy ạ?
 
Quả thực là rất nhanh ,, xin cảm ơn bạn rất nhiều.
Vậy trường hợp lỗi như bạn cảnh báo chẳng lẽ không có giải pháp nào khắc phục sao?
Thử thêm cái mớ hỗn độn này vậy:
Mã:
Sub ToMau()
Dim Arr(), Ws, I, J, Tem, lr, lrs
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "Sheet1" Then
With Ws
.[G6:G10000].Font.Color = vbBlack
lr = Sheet1.Range("B" & Rows.Count).End(3).Row
lrs = .Range("G" & Rows.Count).End(3).Row
   If lrs = 6 Then
     Arr = .[G6:G7].Value
    Else
     Arr = .Range(.[G6], .[G65000].End(3)).Value
   End If
       For I = 1 To UBound(Arr)
        If Arr(I, 1) <> Empty Then
         Tem = Split(Arr(I, 1), " & ")
           For J = 0 To UBound(Tem)
            If Application.WorksheetFunction.CountIf(Sheet1.Range("B4:B" & lr), Tem(J)) = 0 Then
            .Range("G" & I + 5).Characters(InStr(Arr(I, 1), Tem(J)), Len(Tem(J))).Font.Color = vbRed
            End If
          Next
        End If
       Next
End With
End If
Next Ws
End Sub


Xin hỏi bạn số 5 trong đoạn code có nghĩa là vậy ạ?
Vì khi chạy code I bắt đầu bằng 1, mà cột G của bạn bắt đầu từ dòng 6 nên + thêm 5.
Ơ nói vậy là không giải quyết ah...tính cho qua ah???. Giải quyết triệt để cái vụ "Chim Hồng" đã gợi ý ở trên đi chứ.... "Chủ trương là phải Triệt Để" nhé! --=0--=0--=0
Lâu lâu hứng lên viết mà mấy anh cứ bắt bí tui quá. Mốt tui nhậu say là về ngủ luôn.
 
Lần chỉnh sửa cuối:
Thử thêm cái mớ hỗn độn này vậy:
Mã:
Sub ToMau()
Dim Arr(), Ws, I, J, Tem, lr, lrs
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "Sheet1" Then
With Ws
.[G6:G10000].Font.Color = vbBlack
lr = Sheet1.Range("B" & Rows.Count).End(3).Row
lrs = .Range("G" & Rows.Count).End(3).Row
   If lrs = 6 Then
     Arr = .[G6:G7].Value
    Else
     Arr = .Range(.[G6], .[G65000].End(3)).Value
   End If
       For I = 1 To UBound(Arr)
        If Arr(I, 1) <> Empty Then
         Tem = Split(Arr(I, 1), " & ")
           For J = 0 To UBound(Tem)
            If Application.WorksheetFunction.CountIf(Sheet1.Range("B4:B" & lr), Tem(J)) = 0 Then
            .Range("G" & I + 5).Characters(InStr(Arr(I, 1), Tem(J)), Len(Tem(J))).Font.Color = vbRed
            End If
          Next
        End If
     Next
End With
End If
Next Ws
End Sub



Vì khi chạy code I bắt đầu bằng 1, mà cột G của bạn bắt đầu từ dòng 6 nên + thêm 5.

Lâu lâu hứng lên viết mà mấy anh cứ bắt bí tui quá. Mốt tui nhậu say là về ngủ luôn.

Thật ngưỡng mộ,, không có gì có thể làm khó được bạn.
Cảm ơn bạn và mọi người rất nhiều.
 
Ý ảnh mới thêm cái đoạn đỏ đỏ kìa
Vầy nó gọn hơn í...
Mã:
Arr = .Range(.[G6], .[G65000].End(3)).resize(1).Value
Gọn hơn nhưng hiệu quả thì phải coi lại nha "cưng". Vụ này hồi nhớ có chọc ông 1 lần rồi. Bữa nay mình lại bị phá lại. >"<
P/s: Cơ mà hãy thử cái dòng đó vô code trên xem.-\\/.
 
Lần chỉnh sửa cuối:
Gọn hơn nhưng hiệu quả thì phải coi lại nha "cưng". Vụ này hồi nhớ có chọc ông 1 lần rồi. Bữa nay mình lại bị phá lại. >"<
P/s: Cơ mà hãy thử cái dòng đó vô code trên xem.-\\/.

bạn phải hỏi trường mẫu giáo nào cấp bằng cho học viên viết đoạn này
Ý ảnh mới thêm cái đoạn đỏ đỏ kìa
Vầy nó gọn hơn í...
Mã:
Arr = .Range(.[G6], .[G65000].End(3)).resize(1).Value
cái trường đó thiệt là vô trách nhiệm với xã hội quá đi à
 
bạn phải hỏi trường mẫu giáo nào cấp bằng cho học viên viết đoạn này

cái trường đó thiệt là vô trách nhiệm với xã hội quá đi à
Tui và ảnh ấy chung trường, chung thầy cô dạy, cho nên không thể nào đổ lỗi do nhà trường hay thầy cô được --=0--=0--=0
 
Một bài toán tô màu kiểu khác ?

Xin cảm ơn sự hỗ trợ của các bạn rất nhiều.
Hiện giờ vẫn kiểu dữ liệu như cũ nhưng tôi muốn thiết lập thêm một kiểu khác nữa cụ thể đã nêu trong file kèm.
Rất mong lại nhận được thêm nhiều sự hỗ trợ nữa từ của các bạn.
Thanks you very much.
 

File đính kèm

Xin cảm ơn sự hỗ trợ của các bạn rất nhiều.
Hiện giờ vẫn kiểu dữ liệu như cũ nhưng tôi muốn thiết lập thêm một kiểu khác nữa cụ thể đã nêu trong file kèm.
Rất mong lại nhận được thêm nhiều sự hỗ trợ nữa từ của các bạn.
Thanks you very much.
Cụ thể là bạn muốn 1 code mới để riêng cho trường hợp này? Code đó tô 1 lúc 2 bảng luôn. Hay bảng 1 là bạn để làm công thức?
 
Cụ thể là bạn muốn 1 code mới để riêng cho trường hợp này? Code đó tô 1 lúc 2 bảng luôn. Hay bảng 1 là bạn để làm công thức?
Đúng vậy bạn ah đây là một bài toán mới.
Cũng như bài trước dùng công thức cũng được dùng code cũng được.
Mỗi bảng là 1 trường hợp riêng bạn nhé.
Rất mong bạn và mọi người giúp đỡ.
Thanks you very much.
 
Đúng vậy bạn ah đây là một bài toán mới.
Cũng như bài trước dùng công thức cũng được dùng code cũng được.
Mỗi bảng là 1 trường hợp riêng bạn nhé.
Rất mong bạn và mọi người giúp đỡ.
Thanks you very much.

tôi ngó bộ các thanh niên hôm nay có vẻ sẽ nghiêm túc lắm đây . hí hí =))
tôi có viết công thức nhưng thật tiếc excel nó không cho copy vào ô CF , lý do tại sao thì phải nhờ cộng đồng giải thích hộ rồi
Mã:
=IF(ISNUMBER(FIND("&",$E6)), SUMPRODUCT(--(1* MID(SUBSTITUTE($E6,"&",REPT(" ",99)),(ROW(OFFSET($A$1,,,LEN($E6)-LEN(SUBSTITUTE($E6,"&",""))))-1)*99+1,99) < 1* MID(SUBSTITUTE($E6,"&",REPT(" ",99)),(ROW(OFFSET($A$1,,,LEN($E6)-LEN(SUBSTITUTE($E6,"&","")))))*99,99)))<LEN($E6)-LEN(SUBSTITUTE($E6,"&","")))

còn nếu xài code thì phải đi kiếm các siêu cao thủ thôi
 
tôi ngó bộ các thanh niên hôm nay có vẻ sẽ nghiêm túc lắm đây . hí hí =))
tôi có viết công thức nhưng thật tiếc excel nó không cho copy vào ô CF , lý do tại sao thì phải nhờ cộng đồng giải thích hộ rồi
Mã:
=IF(ISNUMBER(FIND("&",$E6)), SUMPRODUCT(--(1* MID(SUBSTITUTE($E6,"&",REPT(" ",99)),(ROW(OFFSET($A$1,,,LEN($E6)-LEN(SUBSTITUTE($E6,"&",""))))-1)*99+1,99) < 1* MID(SUBSTITUTE($E6,"&",REPT(" ",99)),(ROW(OFFSET($A$1,,,LEN($E6)-LEN(SUBSTITUTE($E6,"&","")))))*99,99)))<LEN($E6)-LEN(SUBSTITUTE($E6,"&","")))

còn nếu xài code thì phải đi kiếm các siêu cao thủ thôi
Xin cảm ơn bạn đã giúp đỡ tôi
Tôi đã chuyển file sang *xlsb mà cũng không copy vào được.
 
Theo suy đoán chủ quan của tôi thì cái ô CF trong excel nó giới hạn về độ dài (ký tự) trong công thức. Nhưng không rõ là nó giới bạn bao nhiêu... Cho nên nếu công thức quá dài thì không có cách nào mà ép nó vào được...--=0--=0--=0--=0
Giới hạn của file Excel 2003 là 255 ký tự, Excel 2007 là 8192.
Công thức dài cũng có cách chứ không phải không. Cắt ra thành nhiều đoạn cho vào name là được.
Xin cảm ơn bạn đã giúp đỡ tôi
Tôi đã chuyển file sang *xlsb mà cũng không copy vào được.
Được chứ sao lại không. Tuy nhiên, sau khi save as bạn phải đóng và mở lại file thì mới được. Bạn xem file đính kèm.
Xin cảm ơn sự hỗ trợ của các bạn rất nhiều.
Hiện giờ vẫn kiểu dữ liệu như cũ nhưng tôi muốn thiết lập thêm một kiểu khác nữa cụ thể đã nêu trong file kèm.
Rất mong lại nhận được thêm nhiều sự hỗ trợ nữa từ của các bạn.
Thanks you very much.
Sau khi đánh dấu bằng màu bạn sẽ làm gì tiếp theo? Nếu bạn đánh dấu để sửa lại cho đúng chuẩn thì sao không nhờ mọi người giúp chuyển dữ liệu về đúng chuẩn luôn mà phải đi đường vòng???
 

File đính kèm

Giới hạn của file Excel 2003 là 255 ký tự, Excel 2007 là 8192.
Công thức dài cũng có cách chứ không phải không. Cắt ra thành nhiều đoạn cho vào name là được.

Được chứ sao lại không. Tuy nhiên, sau khi save as bạn phải đóng và mở lại file thì mới được. Bạn xem file đính kèm.

Sau khi đánh dấu bằng màu bạn sẽ làm gì tiếp theo? Nếu bạn đánh dấu để sửa lại cho đúng chuẩn thì sao không nhờ mọi người giúp chuyển dữ liệu về đúng chuẩn luôn mà phải đi đường vòng???

Đúng đúng quả là một ý tưởng tốt thật sự tôi không nghĩ là có thể làm được như vậy như bạn đã nêu tôi chỉ đánh dầu để sửa lại thôi
Nếu có thể mong bạn và mọi người tiếp tục hỗ trợ thêm ạ.
Xin cảm ơn bạn rất nhiều.
 
Xin cảm ơn sự hỗ trợ của các bạn rất nhiều.
Hiện giờ vẫn kiểu dữ liệu như cũ nhưng tôi muốn thiết lập thêm một kiểu khác nữa cụ thể đã nêu trong file kèm.
Rất mong lại nhận được thêm nhiều sự hỗ trợ nữa từ của các bạn.
Thanks you very much.
Chỉnh lại để bạn xài theo kiểu mới:
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 7 Then
Dim Arr(), I, J, Tem, lr, Num
With Sheet1
.[G6:G10000].Font.Color = vbBlack
lr = .Range("G" & Rows.Count).End(3).Row
   If lr = 6 Then
     Arr = .[G6:G7].Value
    Else
     Arr = .Range(.[G6], .[G65000].End(3)).Value
   End If
       For I = 1 To UBound(Arr)
        Num = 0
        If Arr(I, 1) <> Empty Then
         Tem = Split(Arr(I, 1), " & ")
        End If
           For J = 1 To UBound(Tem)
             If Val(Tem(J)) < Val(Tem(J - 1)) Then
               Num = Num + Len(Tem(J - 1)) + 3 * J
              .Range("G" & I + 5).Characters(InStr(Num, Arr(I, 1), Tem(J)), Len(Tem(J))).Font.Color = vbRed
             End If
          Next
       Next
End With
End If
End Sub
 
Lần chỉnh sửa cuối:
Bạn lấy lại code trên Paste vô sheet2 rồi thử nhập dữ liệu xem nhé. Nếu sai la lên chỉnh lại còn hông thì tui dừng tại đây. Chúc thành công.
Thân chào.
 
Lần chỉnh sửa cuối:
Đúng đúng quả là một ý tưởng tốt thật sự tôi không nghĩ là có thể làm được như vậy như bạn đã nêu tôi chỉ đánh dầu để sửa lại thôi
Nếu có thể mong bạn và mọi người tiếp tục hỗ trợ thêm ạ.
Xin cảm ơn bạn rất nhiều.
Tặng bạn UDF này. Có thể sắp xếp chuỗi/số, tăng/giảm
PHP:
Function SortText(ByVal Text As String, Optional ByVal Delimiter As String, Optional ByVal ZtoA As Boolean = False, Optional ByVal IsNum As Boolean = False) As String
Dim Arr As Variant, Arr1 As Variant, i As Long
Arr = Split(Text, Delimiter)
If IsNum Then
    ReDim Arr1(LBound(Arr, 1) To UBound(Arr, 1))
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        Arr1(i) = Val(Arr(i))
    Next
Else
    Arr1 = Arr
End If
SortArr Arr1, ZtoA
SortText = Join(Arr1, Delimiter)
End Function
PHP:
Private Sub SortArr(ByRef Arr1, ByVal ZtoA)
Dim i As Long, j As Long, TmpVal
For i = LBound(Arr1, 1) To UBound(Arr1, 1) - 1
    For j = i + 1 To UBound(Arr1, 1)
        If (Arr1(i) < Arr1(j)) = ZtoA Then
            TmpVal = Arr1(i):    Arr1(i) = Arr1(j):    Arr1(j) = TmpVal
        End If
    Next
Next
End Sub
 

File đính kèm

Tặng bạn UDF này. Có thể sắp xếp chuỗi/số, tăng/giảm
PHP:
Function SortText(ByVal Text As String, Optional ByVal Delimiter As String, Optional ByVal ZtoA As Boolean = False, Optional ByVal IsNum As Boolean = False) As String
Dim Arr As Variant, Arr1 As Variant, i As Long
Arr = Split(Text, Delimiter)
If IsNum Then
    ReDim Arr1(LBound(Arr, 1) To UBound(Arr, 1))
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        Arr1(i) = Val(Arr(i))
    Next
Else
    Arr1 = Arr
End If
SortArr Arr1, ZtoA
SortText = Join(Arr1, Delimiter)
End Function
PHP:
Private Sub SortArr(ByRef Arr1, ByVal ZtoA)
Dim i As Long, j As Long, TmpVal
For i = LBound(Arr1, 1) To UBound(Arr1, 1) - 1
    For j = i + 1 To UBound(Arr1, 1)
        If (Arr1(i) < Arr1(j)) = ZtoA Then
            TmpVal = Arr1(i):    Arr1(i) = Arr1(j):    Arr1(j) = TmpVal
        End If
    Next
Next
End Sub

Bạn lấy lại code trên Paste vô sheet2 rồi thử nhập dữ liệu xem nhé. Nếu sai la lên chỉnh lại còn hông thì tui dừng tại đây. Chúc thành công.
Thân chào.

Thật tuyệt vời,các bạn giỏi quá thật sự tôi không hiểu một chút gì cả nhưng tôi đã áp dụng được và đã cho ra kết quả theo đúng ý mình.
Mong về sau sẽ còn nhận được thêm nhiều sự trợ giúp của các bạn và mọi người.
Tôi xin cảm ơn các bạn rất nhiều.
 

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

Back
Top Bottom