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

Liên hệ QC

tohongdieu

Thành viên chính thức
Tham gia
17/11/09
Bài viết
65
Được thích
1
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 đỡ.
 
Lần chỉnh sửa cuối:
Mình quên gửi file đính kèm
 

File đính kèm

  • test.xls
    177.5 KB · Đọc: 31
Không có cách nào sao ta? mọi người giúp mình với!
 
Không có cách nào sao ta? mọi người giúp mình với!

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
 
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
 
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é.
 

File đính kèm

  • 5.Theo doi HTNV.xls
    462 KB · Đọc: 13
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:
Mã:
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:
Mã:
=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:
Mã:
=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:
Mã:
="Họ và tên: "&VLOOKUP(wks,'Tong Hop'!$B$9:$C$33,2,0)
(khỏi mất công gõ)
 

File đính kèm

  • 5.Theo doi HTNV.xls
    453 KB · Đọc: 63
Cám ơn bạn đã bỏ thời gian giúp đỡ, nói thật mình không biết sâu về excel nên cách của bạn mình không hiểu. Kết quả thì OK rồi, nhưng nếu không có comment thì bạn giúp mình ghi chữ "Bình thường" chứ đừng bỏ trống
 
Lần chỉnh sửa cuối:
Cụ thể mình muốn các sheet của từng người sẽ hiển thị giống như sheet TVBe mình đã nhập tay, bên sheet Tong hợp Trà Văn Bè chỉ có 2 comment ngày 12, 13. Thì bên sheet TVBe cũng chỉ có nội dung của 2 comment đó ở ngày 12 và 13, các ngày còn lại ghi chữ "Bình thường". Mình kèm file
 

File đính kèm

  • 5.Theo doi HTNV.xls
    435.5 KB · Đọc: 13
OK cám ơn bạn, mình đã giải quyết được rồi, 1 lần nữa cám ơn bạn rất nhiều, cám ơn diễn đàn!
 
Chắc là lồng thêm cái If vào hàm tự tạo của anh á anh!

Mã:
 = if(Hàm tự tạo="","",Hàm tự tạo)

Chưa biết hàm tự tạo là cái gì nhưng công thức của bạn có khác gì công thức sau?
Mã:
=Hàm tự tạo
 
Chưa biết hàm tự tạo là cái gì nhưng công thức của bạn có khác gì công thức sau?
Mã:
=Hàm tự tạo

HIxx...., đại ý là nếu không có coment tại ngày đó, thì ghi chú là bình thường, nên nếu bạn ấy không chỉnh được code của anh NDU thì lồng If vào hàm tự tạo của anh NDU: nếu = rỗng thì thay bằng Bình thường. Tại mình gõ nhầm ý.........quên gõ vào chữ bình thường vào nháy kép,..........hehe
 
Thật thì mình rất mê mấy vụ code này, tiếc là mình không có thời gian để theo, hồi trước lúc mới đi làm, chỉ sử dụng hàm thôi mà đã giải quyết rất nhiều thứ trong công việc. Thời gian sau mình hoán đổi vị trí công tác nên không còn dính líu tới excel nhiều nữa và cũng không có thời gian để học hỏi thêm. Cũng buồn, giờ lâu lâu gặp khó khăn chỉ biết lên GPE nhờ hỗ trợ thôi, cũng may là GPE có rất nhiều anh chị em nhiệt huyết. Xin chân thành cảm ơn.
 
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:
Mã:
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:
Mã:
=[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
 
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:
Mã:
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:
Mã:
=[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

Vâng, gọn gàng và sáng sủa hơn, hè hè. cám ơn bạn.
 
Bạn ndu96081631 xem giúp mình sao file bây giờ nó không chạy nữa. Mình chỉ delete bớt số người bên sheet "Tong Hop" và các sheet tương ứng với từng người. Mong bạn rảnh xem lại giúp
 

File đính kèm

  • Theo doi HTNV_thang 07.xls
    383.5 KB · Đọc: 4
Web KT
Back
Top Bottom