Dùng VBA nào để comment tự hiện (2 người xem)

  • Thread starter Thread starter KUMI
  • Ngày gửi Ngày gửi
Liên hệ QC

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

KUMI

Bụi phấn
Tham gia
17/1/12
Bài viết
564
Được thích
571
Gửi GPE!
Chúc GPE Sức khỏe tốt để công tác tốt.
Em biết gì về VBA cả nhưng theo em đc hiểu để thực hiện đc vấn đề này chỉ còn cách sử dụng VBA.
Em có một file và câu hỏi em đã để trong file
Mọi người trong GPE xem file đính kèm nếu có cách nào chỉ em với nhé!
Xin trân thành cám ơn GPE!
 

File đính kèm

Gửi GPE!
Chúc GPE Sức khỏe tốt để công tác tốt.
Em biết gì về VBA cả nhưng theo em đc hiểu để thực hiện đc vấn đề này chỉ còn cách sử dụng VBA.
Em có một file và câu hỏi em đã để trong file
Mọi người trong GPE xem file đính kèm nếu có cách nào chỉ em với nhé!
Xin trân thành cám ơn GPE!

Hay là bạn tự vẽ bằng tay cái comment ấy đi cho dễ hình dung... vì tôi xem file cũng chưa hiểu sẽ cho comment hiện ra tại chổ nào và nội dung của comment chứa những gì
 
Upvote 0
Gửi GPE!
Chúc GPE Sức khỏe tốt để công tác tốt.
Em biết gì về VBA cả nhưng theo em đc hiểu để thực hiện đc vấn đề này chỉ còn cách sử dụng VBA.
Em có một file và câu hỏi em đã để trong file
Mọi người trong GPE xem file đính kèm nếu có cách nào chỉ em với nhé!
Xin trân thành cám ơn GPE!

Bài này tôi thấy tương tự với [URL="http://www.giaiphapexcel.com/forum/showthread.php?70995-Hàm-tính-tổng-số-lần-nhập-xuất"]Hàm tính tổng số lần nhập xuất[/URL]
Chỉ cần thêm
PHP:
*($E$11:$E$19="x")*
Vào cthức của bài trên là được
 
Upvote 0
Vâng! Xin lỗi Thầy và Mọi người em gửi lại File Thầy và mọi người xem lại nhé!
 

File đính kèm

Upvote 0
Vâng! Xin lỗi Thầy và Mọi người em gửi lại File Thầy và mọi người xem lại nhé!
Làm thử xem sao...
1> Hàm hổ trợ nối chuổi:
PHP:
Function JoinText(ByVal Sep As String, ByVal IgnoreBlanks As Boolean, ParamArray sArray()) As String
  Dim tmpArr, SubArr, Arr(), Item, n As Long, tmp As String
  On Error Resume Next
  For Each SubArr In sArray
    tmpArr = SubArr
    If TypeName(tmpArr) <> "Variant()" Then
      tmp = IIf(TypeName(tmpArr) = "Error", "", Trim(CStr(tmpArr)))
      If IgnoreBlanks = False Or Len(tmp) Then
        n = n + 1
        ReDim Preserve Arr(1 To n)
        Arr(n) = tmp
      End If
    Else
      For Each Item In tmpArr
        tmp = IIf(TypeName(Item) = "Error", "", Trim(CStr(Item)))
        If IgnoreBlanks = False Or Len(tmp) Then
          n = n + 1
          ReDim Preserve Arr(1 To n)
          Arr(n) = tmp
        End If
      Next
    End If
  Next
  If n Then JoinText = Join(Arr, Sep)
End Function
2> Hàm để Add Comment
PHP:
Function CommAdd(ByVal sArray) As Long
  Dim tmpArr, Item, k As Long, rCel As Range, Text As String
  On Error Resume Next
  Application.Volatile
  tmpArr = sArray
  Set rCel = Application.ThisCell
  rCel.Comment.Delete
  For Each Item In tmpArr
    If Len(CStr(Item)) Then k = k + 1
  Next
  If k Then
    CommAdd = k
    Text = JoinText(vbLf, True, tmpArr)
    If rCel(1, 1).Comment Is Nothing Then rCel(1, 1).AddComment
    rCel(1, 1).Comment.Text Text
  End If
End Function
3> Áp dụng:
- Tại K10 gõ chữ "Nhap" và tại L10 gõ chữ "Xuat"
- Tại K11, gõ công thức:
PHP:
=CommAdd(IF(($D$11:$D$19=$J11)*($F$11:$F$19=K$10),$C$11:$C$19&"("&$J11&") "&K$10&": "&$G$11:$G$19,""))
- Bấm tổ hợp phím Ctrl + Shift + Enter để kết thúc
- Kéo fill công thức sang phải và xuống dưới
 

File đính kèm

Upvote 0
@@! Híc thật không ngờ là có thể được.
Em đã clear comment và mở file lên kết quả OK!
Tuy em không hiểu gì về VBA nhưng xem bài thầy viết thì thấy... thật phi thường!
Em cám ơn thầy rất nhiều! Cảm ơn GPE muôn năm!
 
Upvote 0
@@! Híc thật không ngờ là có thể được.
Em đã clear comment và mở file lên kết quả OK!
Tuy em không hiểu gì về VBA nhưng xem bài thầy viết thì thấy... thật phi thường!
Em cám ơn thầy rất nhiều! Cảm ơn GPE muôn năm!
Add hình ảnh vào Comment bằng hàm tự tạo còn được nữa thì xá gì cái vụ add ba cái ký tự
Xem ở đây:
http://www.giaiphapexcel.com/forum/showthread.php?51408-Chèn-hình-vào-cell-bằng-hàm-tự-tạo
Chỉ là sửa lại đôi chút những cái đã viết sẵn trước đó mà thôi
 
Upvote 0
Em chào Thầy!
Với công thức này

=CommAdd(IF(($D$11:$D$19=$J11)*($F$11:$F$19=K$10),$C$11:$C$19&"("&$J11&") "&K$10&": "&$G$11:$G$19,""))

Em có thể lấy dữ liệu ở một file khác được không? và Code để ở file nào có cần phải sửa lại code không ạ?
Ví dụ em tách file trên ra làm 2 file (file đính kèm)
Mong thầy và mọi người trong GPE chỉ giáo thêm ạ! Xin cảm ơn!

 

File đính kèm

Upvote 0
Em chào Thầy!
Với công thức này

=CommAdd(IF(($D$11:$D$19=$J11)*($F$11:$F$19=K$10),$C$11:$C$19&"("&$J11&") "&K$10&": "&$G$11:$G$19,""))

Em có thể lấy dữ liệu ở một file khác được không? và Code để ở file nào có cần phải sửa lại code không ạ?
Ví dụ em tách file trên ra làm 2 file (file đính kèm)
Mong thầy và mọi người trong GPE chỉ giáo thêm ạ! Xin cảm ơn!


Đương nhiên được rồi
Bạn mở 2 file cùng lúc, xong gõ công thức dưới đây vào cell E11
PHP:
=CommAdd(IF(('[File nguon.xls]Sheet1'!$D$11:$D$19=$D11)*('[File nguon.xls]Sheet1'!$F$11:$F$19=E$10),'[File nguon.xls]Sheet1'!$C$11:$C$19&"("&$D11&") "&E$10&": "&'[File nguon.xls]Sheet1'!$G$11:$G$19,""))
Kéo fill công thức xong là có thể đóng file nguồn rồi đấy
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn hãy tham khảo đoạn code mình viết dưới đây:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i%, j%, n%, k%, k1%
For i = 11 To 19
If Target.Address = "$E$" & i Then
For j = 11 To 14
For n = 11 To 19
If Range("F" & n) = "Xuat" And Range("D" & n) = Range("J" & j) And Trim(Range("E" & n)) = "x" Then k = k + 1
If Range("F" & n) = "Nhap" And Range("D" & n) = Range("J" & j) And Trim(Range("E" & n)) = "x" Then k1 = k1 + 1
Next
Range("L" & j) = k
Range("K" & j) = k1
k = 0
k1 = 0
Next
End If
Next
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn hãy tham khảo đoạn code mình viết dưới đây:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i%, j%, n%, k%, k1%
For i = 11 To 19
If Target.Address = "$E$" & i Then
For j = 11 To 14
For n = 11 To 19
If Range("F" & n) = "Xuat" And Range("D" & n) = Range("J" & j) And Trim(Range("E" & n)) = "x" Then k = k + 1
If Range("F" & n) = "Nhap" And Range("D" & n) = Range("J" & j) And Trim(Range("E" & n)) = "x" Then k1 = k1 + 1
Next
Range("L" & j) = k
Range("K" & j) = k1
k = 0
k1 = 0
Next
End If
Next
End Sub
Code này.. không ăn thua! Vì mức độ tuỳ biến thấp
Mai này dữ liệu thay đổi, lại phải sửa code tè lè sao?
(dùng hàm thì chỉ cần sửa công thức trên bảng tính, code để nguyên chẳng cần sửa gì cả)
 
Upvote 0
@@! Thật sự em không hiểu một từ nào cả nhìn vào cư như là ma trận vậy.
Tiếng anh, lại có cả viết tắt ...Híc!
Rất cám ơn Các thầy và các bạn trong GPE đã nhiệt tình giúp đỡ.
GPE chú ý giữ gìn sức khỏe nhé! Tks!
 
Upvote 0
Code này.. không ăn thua! Vì mức độ tuỳ biến thấp
Mai này dữ liệu thay đổi, lại phải sửa code tè lè sao?
(dùng hàm thì chỉ cần sửa công thức trên bảng tính, code để nguyên chẳng cần sửa gì cả)
Bác nói không đúng rồi, các hàm có sẵn trong Excel mà bác đang sử dụng nó cũng được viết bằng mã đó. Đoạn mã trên chỉ là một ví dụ đơn giản thôi, nếu có cấu trúc cụ thể của chương trình và viết cẩn thận,tỷ mỉ một chút thì không cẩn phải thay đổi như sử dụng công thức.
 
Lần chỉnh sửa cuối:
Upvote 0
Bác nói không đúng rồi, các hàm có sẵn trong Excel mà bác đang sử dụng nó cũng được viết bằng mã đó. Đoạn mã trên chỉ là một ví dụ đơn giản thôi, nếu có cấu trúc cụ thể của chương trình và viết cẩn thận,tỷ mỉ một chút thì không cẩn phải thay đổi như sử dụng công thức.

Đúng,
Và quan trọng mọi thứ cao siêu đến mấy đều bắt đầu từ "lè tè"
Vấn đề là ý tưởng, hơn nữa SUB sẽ nhẹ hơn Function - và áp dụng cho các giải pháp nhanh gọn (Function thì được cái tiện hơn chút thui)
 
Upvote 0
Bác nói không đúng rồi, các hàm có sẵn trong Excel mà bác đang sử dụng nó cũng được viết bằng mã đó. Đoạn mã trên chỉ là một ví dụ đơn giản thôi, nếu có cấu trúc cụ thể của chương trình và viết cẩn thận,tỷ mỉ một chút thì không cẩn phải thay đổi như sử dụng công thức.

Hình như các đồng chí cóc hiểu ý tôi nói thì phải
Tôi nói dùng hàm là HÀM TỰ TẠO ---> Cóc có nói đến vụ HÀM CÓ SẴN gì cả
Đơn giản là bạn cứ thử với dữ liệu người ta thay đổi đi, có phải là bạn phải sửa code không? (code của tôi khỏi cần sửa)
Ngoài ra. với yêu cầu mới người ta tách ra thành 2 file riêng, bạn tính sao? (code của tôi cũng.. cóc cần sửa)
 
Upvote 0
Hình như các đồng chí cóc hiểu ý tôi nói thì phải
Tôi nói dùng hàm là HÀM TỰ TẠO ---> Cóc có nói đến vụ HÀM CÓ SẴN gì cả
Đơn giản là bạn cứ thử với dữ liệu người ta thay đổi đi, có phải là bạn phải sửa code không? (code của tôi khỏi cần sửa)
Ngoài ra. với yêu cầu mới người ta tách ra thành 2 file riêng, bạn tính sao? (code của tôi cũng.. cóc cần sửa)

Lúc đầu tôi tưởng bạn cũng nhiều tuổi nên có kinh nghiệm, nhưng đọc cách diễn đạt bài viết của bạn thì có bạn chỉ là đàn em của tôi.

Để giải quyết một bài toán thì có hàng trăm, hàng nghìn phương pháp và cách diễn đạt, đấy mới là tài nguyên trí tuệ.

Mọi người tham gia diễn đàn là để học hỏi, trau dồi kiến thức một cách thuần tuý. Trao đổi, thảo luận một cách trong sáng để giúp nhau hoàn thiện hơn đấy mới là người có kiến thức và mới là người có kinh nghiệm.

Mình có suy nghĩ như thế, bạn ngẫm xem có đúng không nhé.
 
Upvote 0
Mình có suy nghĩ như thế, bạn ngẫm xem có đúng không nhé.
Cũng đúng
Ẹc... Ẹc... thế thì tùy bạn vậy! Thích viết cái gì cứ viết ---> Quan trọng là người ta có dùng hay không thôi
(hay là cứ nhắm mắt viết đại, quăng lên mà chẳng ai thèm nhìn)
Tại vì bạn mở lời nên tôi mới nói tiếp: Này nhé, hãy đọc kỹ yêu cầu của bài này... Bạn xem thử code của bạn cái COMMENT nó nằm chổ nào?
 
Upvote 0
Hình như các đồng chí cóc hiểu ý tôi nói thì phải
Tôi nói dùng hàm là HÀM TỰ TẠO ---> Cóc có nói đến vụ HÀM CÓ SẴN gì cả
Đơn giản là bạn cứ thử với dữ liệu người ta thay đổi đi, có phải là bạn phải sửa code không? (code của tôi khỏi cần sửa)
Ngoài ra. với yêu cầu mới người ta tách ra thành 2 file riêng, bạn tính sao? (code của tôi cũng.. cóc cần sửa)

Nhiều cóc cóc, nhái nhái vậy pac

Cũng đúng
Ẹc... Ẹc... thế thì tùy bạn vậy! Thích viết cái gì cứ viết ---> Quan trọng là người ta có dùng hay không thôi
(hay là cứ nhắm mắt viết đại, quăng lên mà chẳng ai thèm nhìn)
Tại vì bạn mở lời nên tôi mới nói tiếp: Này nhé, hãy đọc kỹ yêu cầu của bài này... Bạn xem thử code của bạn cái COMMENT nó nằm chổ nào?

Ah, Comments thì đúng là code xuanha chưa đề cập tới, song cũng là 1 cách tiếp cận với cách thức khác
Tuy vậy ở đây muốn pac phê phán cũng từ từ, ai cũng từ dòng code đầu, làm như thế các người hoc code mới nghe nản (thui cứ code ndu... mà dùng)?

ở Code topic này, pac dùng Function JoinText(.........) có vẻ hơi to (thừa) thì phải với dữ liệu bài này, vì ta dữ liệu có thể chủ động kiểm soát trước khi đưa vào hàm tự tạo - có thể comment này là thừa vì to còn hơn thiếu - nhưng sẽ là choáng cho người sử dụng
 
Upvote 0
Nhiều cóc cóc, nhái nhái vậy pac



Ah, Comments thì đúng là code xuanha chưa đề cập tới, song cũng là 1 cách tiếp cận với cách thức khác
Tuy vậy ở đây muốn pac phê phán cũng từ từ, ai cũng từ dòng code đầu, làm như thế các người hoc code mới nghe nản (thui cứ code ndu... mà dùng)?

ở Code topic này, pac dùng Function JoinText(.........) có vẻ hơi to (thừa) thì phải với dữ liệu bài này, vì ta dữ liệu có thể chủ động kiểm soát trước khi đưa vào hàm tự tạo - có thể comment này là thừa vì to còn hơn thiếu - nhưng sẽ là choáng cho người sử dụng

Người Mỹ không còn dạy kiểu tính nhẩm, lấy que ra mà cộng trừ nhân chia như ta nữa, mà cứ nhè vào máy tính, dạy bấm phím, tính toán trên máy tính luôn. Cái này là đốt giai đoạn, đồng thời tiếp nhận công nghệ cao.

Kinh nghiệm của tôi là nếu có ai hoặc chương trình gì mà giải pháp tốt nhất, ngắn gọn nhất, thời gian nhanh nhất thì tôi áp dụng ngay, chưa cần đến cái việc suy nghĩ tại sao thế này, tại sao thế kia. Có bao giờ tôi thắc mắc hàm SUM của Excel nó viết thế nào đâu, nhưng mặc nhiên tôi vẫn xài nó hằng ngày.

Với code hoặc function của Thầy NDU tôi vẫn cứ dùng mà chẳng cần biết tại sao nó lại được kết quả như vậy, tôi "cóc" biết tại sao, miễn là dùng nó tôi có ngay giải pháp. Sau đó tôi sẽ mày mò về nó nhiều hơn.

Thế cho nên, chuyện xài như thế nào là do người dùng lựa chọn, còn người thiết kế sẽ viết ra, tạo ra những chương trình tiện ích. Còn sau này người dùng rảnh rỗi và có tham vọng viết code thì nghiên cứu về nó sâu rộng hơn.

Trân trọng.
 
Upvote 0
Web KT

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

Back
Top Bottom