Dò tìm và lấy giá trị của comment

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Chào tất cả anh/chị/em trong diễn đàn.
Mình đang cần làm việc với các comment nhưng mình không biết phải làm sao.
Mình gửi file kèm.
Trong file mình có 3 sheet: ở sheet 'Tong hop' chỉ thể hiện số và các comment (nếu có) tương ứng với từng ngày trong tháng 06 từ 01 đến 30. Minh có các sheet tương ứng là 'Be' và 'Phuc'.
Đối với sheet 'Be': Bây giờ mình muốn sao chép các comment tương ứng của từng ngày theo dòng tại sheet 'Tong hop' sang các ngày tương ứng theo cột của sheet 'Be', nếu không có comment thì ghi chữ "Bình thường" vào ô ngày tương ứng bên sheet 'Be'. Lưu ý là sao chép nội dung của comment sang nội dung của cell chứ không phải sao chép cả comment sang nhé.
Tương tự đối với sheet 'Phuc'.
Mong anh/chị/em giúp đỡ.

Bạn không nên hối thúc người ta như thế chứ! Bạn gấp nhưng người khác cũng có việc của họ…
———————
Đúng ra bài này rất dễ nhưng có vài thắc mắc:-
– Bạn tạo ra các sheet với tên sheet là tên trong cột B của sheet Tong Hop?
– Vậy trong trường hợp nhiều người trùng tên (khác họ) thì bạn sẽ đặt tên sheet thế nào?
– Và cho dù bạn đặt tên sheet ra sao thì bạn cũng phải nói được nguyên tắc nào để khi tôi nhìn thấy tên sheet là "Be" thì tôi biết là bạn đang nói đến cái tên "Trà Văn Bè" mà không phải là tên nào khác
———————
Nói chung, cách bố trí như trong file là thiếu khoa học nên không dò tìm được, chứ riêng việc lấy text trong comment hoàn toàn không có vấn đề

Cám ơn bạn đã nhắc nhở, mình không nên hối thúc.
– Tên sheet là tên của các anh ở cột B trong sheet tổng hợp. Tại mình ghi tắt ở file test vậy cho nhanh.
– Mình nghĩ bố trí như thế là được rồi đấy chứ. Bởi vì ứng với từng người mình có 1 sheet riêng, và dữ liệu của từng ngày phải bố trí theo cột mới đủ trang giấy cho từng người. Mình cần đến cuối tháng mình in tất cả các sheet ứng với từng người để mọi người đối chiếu.
– Nếu bạn thấy không hợp lý bạn có thể bố trí lại giúp mình và làm thế nào cho tiện để excel dò tìm được mà lấy text từ các comment bên sheet tổng hợp đưa sang các sheet ứng với từng người và các ngày trong tháng.
Xin cám on

1> Hoặc là bạn tạo 1 cột mã nhân viên ở sheet TongHop rồi tạo ra các sheet với tên chính là các mã ấy. Như vậy khi đọc tên sheet xong, ta vào sheet Tong Hop sẽ dò ra được dòng chứa mã ấy ngay lập tức
2> Hoặc là bạn cứ đặt tên sheet trùng với tên nhân viên luôn đi
————-
Nói chung là làm sao để dò tìm dễ dàng là được. Bởi không ai có thể từ chữ "Be" mà suy ra được đó chính là "Trà Văn Bè" đâu

Vâng, mình đã thêm cột ký hiệu (cột B) và đặt tên từng sheet theo ký hiệu ở cột B xong rồi, mình gửi toàn bộ file lên, bạn xem giúp mình nhé.

Ta làm như sau:
1> Tiến hành viết code:
cho code dưới đây vào module:

Function ComLookup(ByVal Lookup_Value, ByVal Table_Range As Range, ByVal Col_Index As Long) As String
  Dim rFind As Range, rRes As Range
  'On Error Resume Next
  Application.Volatile
  If Not IsEmpty(Lookup_Value) Then
    Set rFind = Table_Range.Resize(, 1).Find(Lookup_Value, , xlValues, xlWhole)
    If Not rFind Is Nothing Then
      Set rRes = rFind(, Col_Index)
      If Not rRes.Comment Is Nothing Then ComLookup = rRes.Comment.Text
    End If
  End If
End Function

2> Tạo name để lấy tên sheet (cũng là mã nhân viên)
Bấm Ctrl + F3 vào Define Name, đặt name có tên là wks, có công thức tại khung Refers to:

=MID(CELL("filename",INDIRECT("A1")),FIND("]",CELL("filename",INDIRECT("A1")))+1,1000)

3> Đặt công thức trên bảng tính
Tại sheet TVBe, gõ công thức này vào cell C9:

=ComLookup(wks,'Tong Hop'!$B$9:$AI$33,A9+3)

kéo fill xuống dưới
Copy C9:C39 rồi paste cho tất cả các sheet còn lại
———-
"Khuyến mãi" thêm công thức tại cell A6 ở tất cả các sheet:

="Họ và tên: "&VLOOKUP(wks,'Tong Hop'!$B$9:$C$33,2,0)

(khỏi mất công gõ)

Các bạn đã trả lời giùm mình rồi đó, mình lồng hàm If(hàm của bạn="","Bình thường",hàm của bạn) hi, tại đang bị rối nên cái mình làm được cũng mù luôn.

Hỏi thế để biết bạn giải quyết ra sao thôi. Dùng theo cách trên cũng được, còn không thì sửa code thành vầy:

Function ComLookup(ByVal Lookup_Value, ByVal Table_Range As Range, ByVal Col_Index As Long)
  Dim rFind As Range, rRes As Range
  'On Error Resume Next
  [COLOR=#ff0000]ComLookup = CVErr(xlErrNA)[/COLOR]
  Application.Volatile
  If Not IsEmpty(Lookup_Value) Then
    Set rFind = Table_Range.Resize(, 1).Find(Lookup_Value, , xlValues, xlWhole)
    If Not rFind Is Nothing Then
      Set rRes = rFind(, Col_Index)
      If Not rRes.Comment Is Nothing Then ComLookup = rRes.Comment.Text
    End If
  End If
End Function

xong, trên bảng tính bạn gõ công thức thế này:

=[COLOR=#ff0000]IFERROR([/COLOR]ComLookup(wks,'Tong Hop'!$B$9:$AI$33,A9+3),[COLOR=#ff0000]"Bình thường")[/COLOR]

ngắn hơn và khỏe hơn

www.giaiphapexcel.com/diendan/threads/d%C3%B2-t%C3%ACm-v%C3%A0-l%E1%BA%A5y-gi%C3%A1-tr%E1%BB%8B-c%E1%BB%A7a-comment.105357/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm