Nhờ giúp đỡ code VBA với Name

Liên hệ QC

Anne_1991

Thành viên mới
Tham gia
11/11/19
Bài viết
27
Được thích
3
Hi mọi người,

Em muốn xin mọi người giúp đỡ phần code VBA để gọi Name. Trong file là bảng rút gọn báo cáo tài chính của HDB.

Em muốn tạo một Name cho Cell E4 với tên: Net interest income_2020. Khi mình thêm dòng và thêm cột thì giá trị ở ô này không bị ảnh hưởng bởi việc thêm dòng hay cột.

Và em có thể gọi để sử dụng ở các bảng tính khác, để tiện việc tổng hợp nhiều mã chứng khoán khác nhau.

Em cám ơn ạ.
 

File đính kèm

  • Sample for VBA.xlsx
    23.7 KB · Đọc: 7
Khi thêm 1 dòng bên trên thì ô E4 thành E5 và name Net interest income_2020 vẫn trỏ đến ô E5. Vậy bạn muốn nói ô này là ô nào: E4 hay E5?
 
Upvote 0
Khi thêm 1 dòng bên trên thì ô E4 thành E5 và name Net interest income_2020 vẫn trỏ đến ô E5. Vậy bạn muốn nói ô này là ô nào: E4 hay E5?
Là ô E5 với giá trị 11,897
Bài đã được tự động gộp:

Là ô E5 với giá trị 11,897
Khi thêm 1 dòng bên trên thì ô E4 thành E5 và name Net interest income_2020 vẫn trỏ đến ô E5. Vậy bạn muốn nói ô này là ô nào: E4 hay E5?
Nếu như em muốn đặt code chạy theo tên file thì có khả thi không ạ.

Ví dụ: Gọi Net interest 2020 của HDB thì sẽ là HDB_Net_interest_Income_2020 trog đó, HDB sẽ tự thay đổi theo tên file. (tên file e đặt là HDB)
 
Lần chỉnh sửa cuối:
Upvote 0
Là ô E5 với giá trị 11,897
Vậy thì giá trị và range name của E5 (mà trước khi thêm dòng thì nó là E4) có bị thay đổi gì đâu. Vậy ý muốn của bạn ở bài #1 là gì, nói lại lần nữa xem nào. Nhớ là đừng có nói "ô này" mà phải nói rõ ra.
 
Upvote 0
Vậy thì giá trị và range name của E5 (mà trước khi thêm dòng thì nó là E4) có bị thay đổi gì đâu. Vậy ý muốn của bạn ở bài #1 là gì, nói lại lần nữa xem nào. Nhớ là đừng có nói "ô này" mà phải nói rõ ra.
Vâng ạ.

Em muốn tổng hợp data từ nhiều file excel, với mỗi file là tên của một mã cổ phiếu ngân hàng.

Trên một file ví dụ của mã HDB, ý tưởng của em là đặt tên net interest income 2020, sau đó ghép tên mã cp vào. Khi cần dữ liệu net interest income của một cổ phiếu năm 2020 thì gọi Name đã đặt. Em có thể gọi Name đó ở một file khác file HDB.

Ví dụ: Gọi Net interest 2020 của HDB thì sẽ là HDB_Net_interest_Income_2020 trog đó, HDB sẽ tự thay đổi theo tên file. (tên file e đặt là HDB)

HDB.PNG
 
Upvote 0
Vâng ạ.

Em muốn tổng hợp data từ nhiều file excel, với mỗi file là tên của một mã cổ phiếu ngân hàng.

Trên một file ví dụ của mã HDB, ý tưởng của em là đặt tên net interest income 2020, sau đó ghép tên mã cp vào. Khi cần dữ liệu net interest income của một cổ phiếu năm 2020 thì gọi Name đã đặt. Em có thể gọi Name đó ở một file khác file HDB.

Ví dụ: Gọi Net interest 2020 của HDB thì sẽ là HDB_Net_interest_Income_2020 trog đó, HDB sẽ tự thay đổi theo tên file. (tên file e đặt là HDB)

View attachment 276151
Chứ cái vụ chèn thêm xóa bớt hàng đó đâu rồi, tự nhiên lại đánh rơi mất ý muốn sao?. Tôi chỉ hỏi chỗ này thôi: "Em muốn tạo một Name cho Cell E4 với tên: Net interest income_2020. Khi mình thêm dòng và thêm cột thì giá trị ở ô này không bị ảnh hưởng bởi việc thêm dòng hay cột."
Sau mấy bài trao đổi, chừ ý bạn thế nào?
 
Upvote 0
Chứ cái vụ chèn thêm xóa bớt hàng đó đâu rồi, tự nhiên lại đánh rơi mất ý muốn sao?. Tôi chỉ hỏi chỗ này thôi: "Em muốn tạo một Name cho Cell E4 với tên: Net interest income_2020. Khi mình thêm dòng và thêm cột thì giá trị ở ô này không bị ảnh hưởng bởi việc thêm dòng hay cột."
Sau mấy bài trao đổi, chừ ý bạn thế nào?
Khi thêm 1 dòng bên trên thì ô E4 thành E5 và name Net interest income_2020 vẫn trỏ đến ô E5. Ý em là vậy ạ. Em diễn đạt hơi kém phần này ạ.

Câu "Khi mình thêm dòng và thêm cột thì giá trị ở ô này không bị ảnh hưởng bởi việc thêm dòng hay cột."" bị thừa và gây khó hiểu.
 
Upvote 0
Khi thêm 1 dòng bên trên thì ô E4 thành E5 và name Net interest income_2020 vẫn trỏ đến ô E5. Ý em là vậy ạ. Em diễn đạt hơi kém phần này ạ.

Câu "Khi mình thêm dòng và thêm cột thì giá trị ở ô này không bị ảnh hưởng bởi việc thêm dòng hay cột."" bị thừa và gây khó hiểu.
Như vậy, chừ tôi hiểu ý muốn của bạn là ở đoạn dưới: "em có thể gọi để sử dụng ở các bảng tính khác, để tiện việc tổng hợp nhiều mã chứng khoán khác nhau".
Nếu chỉ có vậy thì ở 1 file nào đó, bạn chỉ cần gọi tên Net interest income_2020 với tham chiếu như sau:
='D:\Sample for VBA.xlsx'!Net interest income_2020 (với Sample for VBA.xlsx là file cổ phiếu nằm ở thư mục gốc đĩa D)
 
Lần chỉnh sửa cuối:
Upvote 0
Như vậy, chừ tôi hiểu ý muốn của bạn là ở đoạn dưới: "em có thể gọi để sử dụng ở các bảng tính khác, để tiện việc tổng hợp nhiều mã chứng khoán khác nhau".
Nếu chỉ có vậy thì ở 1 file nào đó, bạn chỉ cần gọi tên Net interest income_2020 với tham chiếu như sau:
='D:\Sample for VBA.xlsx'!Net interest income_2020 (với Sample for VBA.xlsx là file cổ phiếu nằm ở thư mục gốc đĩa D)

Dạ, em làm được rồi. Em cám ơn anh.

Về phần code, em muốn tạo Name hàng loạt theo giá trị em để ở sheet quản lý code, trong đó các tên Name e đặt ở cột C, refer to ở cột D. Anh giúp e với ạ.

Em cám ơn anh.

1653288828554.png
 

File đính kèm

  • Sample for VBA.xlsx
    26.4 KB · Đọc: 3
Upvote 0
Dạ, em làm được rồi. Em cám ơn anh.

Về phần code, em muốn tạo Name hàng loạt theo giá trị em để ở sheet quản lý code, trong đó các tên Name e đặt ở cột C, refer to ở cột D. Anh giúp e với ạ.

Em cám ơn anh.

View attachment 276318
Code tạo name đại loại thế này
Mã:
Sub Names_Adding()
Dim sArr(), i As Long
With Sheet3
   sArr = .Range("C3", .Range("E" & Rows.Count).End(3)).Value
End With
For i = 1 To UBound(sArr)
   Sheets(sArr(i, 2)).Range(sArr(i, 3)).Name = sArr(i, 1)
Next
End Sub
Tuy nhiên sửa lại chút ở bảng nguồn

1653291563731.png
 
Upvote 0
Đòi "quản lý code" mà chỉ xin code đặt names, không hỏi code xóa names.
Quản lý kiểu này thì bó tay.
 
Upvote 0
Đòi "quản lý code" mà chỉ xin code đặt names, không hỏi code xóa names.
Quản lý kiểu này thì bó tay.

Vâng ạ, e có search thêm một số topic về Name trong VBA, thì tự thêm code để xóa Name. Mọi người xem giúp em có ổn chưa ạ

Sub Names_Adding()
Dim sArr(), i As Long
With Sheet3
sArr = .Range("C3", .Range("E" & Rows.Count).End(3)).Value
End With
For i = 1 To UBound(sArr)
Sheets(sArr(i, 2)).Range(sArr(i, 3)).Name = sArr(i, 1)
Next
End Sub
_______________________________________________
Sub Xoa_TatCaName()
Dim Ten As Variant
For Each Ten In ActiveWorkbook.Names
Ten.Delete
Next
End Sub
Bài đã được tự động gộp:

Code tạo name đại loại thế này
Mã:
Sub Names_Adding()
Dim sArr(), i As Long
With Sheet3
   sArr = .Range("C3", .Range("E" & Rows.Count).End(3)).Value
End With
For i = 1 To UBound(sArr)
   Sheets(sArr(i, 2)).Range(sArr(i, 3)).Name = sArr(i, 1)
Next
End Sub
Tuy nhiên sửa lại chút ở bảng nguồn

View attachment 276321
Em cám ơn anh ạ
 

File đính kèm

  • Sample for VBA.xlsx
    24.2 KB · Đọc: 2
Upvote 0
Người ít viết code hay cho rằng code là trọng điểm. Thực tế, một chương trình có giá trị là chương trình được thiết kế với lô gic hoạt động nghiêm chỉnh, kết quả dễ kiểm soát.

Quy trình của việc này là phải đặt ra:
1. một ô cho các names muốn giữ lại
2. hai ô cho các names cần đặt thêm: một ô chứa các names thêm, và một ô chứa các trị của chúng.

Code VBA sẽ túm hết các names hiện có ra, cái nào không có trong danh sách cần giữ lại thì xóa hết. Kế đó nó sẽ thêm các names cần thêm.
Names nào có săn, chỉ cần chỉnh trị thì chớ để nó trong danhg sách muốn giữ.
 
Upvote 0
Người ít viết code hay cho rằng code là trọng điểm. Thực tế, một chương trình có giá trị là chương trình được thiết kế với lô gic hoạt động nghiêm chỉnh, kết quả dễ kiểm soát.

Quy trình của việc này là phải đặt ra:
1. một ô cho các names muốn giữ lại
2. hai ô cho các names cần đặt thêm: một ô chứa các names thêm, và một ô chứa các trị của chúng.

Code VBA sẽ túm hết các names hiện có ra, cái nào không có trong danh sách cần giữ lại thì xóa hết. Kế đó nó sẽ thêm các names cần thêm.
Names nào có săn, chỉ cần chỉnh trị thì chớ để nó trong danhg sách muốn giữ.

Cám ơn anh đã giải thích cặn kẽ cho e hiểu. Em không viết được code, chỉ biết mở để xem với chỉnh dòng cột trong đó :(

Em có tạo thêm ô như anh đã gợi ý nhưng không biết chỉnh code của anh @quang Hải như thế nào
 

File đính kèm

  • Sample for VBA.xlsb
    29.3 KB · Đọc: 4
Upvote 0
Web KT
Back
Top Bottom