Đặt tên file excel theo sheet

  • #1

Có cách nào đổi tên Sheet hàng loạt = ô A1 trong mỗi Sheet không ạ?
Em có 1 file excel rất nhiều Sheet: Sheet 1, Sheet 2, .... khoảng vài trăm cái có form giống nhau.
A1 dạng chuỗi: AT02D ; CB12T; ...

  • #2

Cứ kêu vài trăm để tăng mức độ "..." lên?

PHP:

Sub vidu() Dim ws As Worksheet On Error Resume Next ''Tên sheet không chứa các ký tự đặc biêt: ?/\* và không trùng tên nhau For Each ws In ThisWorkbook.Worksheets If Len(ws.Range("A1").Value) > 0 Then ws.Name = ws.Range("A1").Value End If Next ws End Sub

  • #3

Em có vài trăm thật. Nhiều sheet nhưng mỗi Sheet rất nhẹ. Hàng ngày nhập liệu mới. Do thao tác trên các sheet cũng giống y nhau luôn nên em tính dùng Macro.
Hiện em còn đang muốn một ý định đổi tên các Sheet theo thứ tự 001->300. Rồi làm cái vòng lặp macro cho nó làm hết các sheet từ 1->300.
Cảm ơn bác để e thử luôn cách bác bảo đây!

Cứ kêu vài trăm để tăng mức độ "..." lên?

PHP:

Sub vidu() Dim ws As Worksheet On Error Resume Next ''Tên sheet không chứa các ký tự đặc biêt: ?/\* và không trùng tên nhau For Each ws In ThisWorkbook.Worksheets If Len(ws.Range("A1").Value) > 0 Then ws.Name = ws.Range("A1").Value End If Next ws End Sub

  • #4

Tuyệt vời! EM CẢM ƠN BÁC NHIỀU!

Cứ kêu vài trăm để tăng mức độ "..." lên?

PHP:

Sub vidu() Dim ws As Worksheet On Error Resume Next ''Tên sheet không chứa các ký tự đặc biêt: ?/\* và không trùng tên nhau For Each ws In ThisWorkbook.Worksheets If Len(ws.Range("A1").Value) > 0 Then ws.Name = ws.Range("A1").Value End If Next ws End Sub

  • #5

Cứ kêu vài trăm để tăng mức độ "..." lên?

PHP:

Sub vidu() Dim ws As Worksheet On Error Resume Next ''Tên sheet không chứa các ký tự đặc biêt: ?/\* và không trùng tên nhau For Each ws In ThisWorkbook.Worksheets If Len(ws.Range("A1").Value) > 0 Then ws.Name = ws.Range("A1").Value End If Next ws End Sub

Có trường hợp thế này sẽ phá vỡ "thế trận":
- Ta đang có 20 sheet
- Cell A1 các sheet có giá trị lần lượt là: T01, T02... đến T20
- Xui xẻo, sheet ở index thứ 2 đang có tên T01, sheet ở index thứ 3 đang có tên T02.... vân... vân... đại khái thế!
Vậy ngay từ đầu chạy code đã bị trùng tên
Trường hợp này tính sao?
Cái vụ đổi tên sheet thấy dễ nhưng cũng không phải dễ

  • #6

Có trường hợp thế này sẽ phá vỡ "thế trận":
- Ta đang có 20 sheet
- Cell A1 các sheet có giá trị lần lượt là: T01, T02... đến T20
- Xui xẻo, sheet ở index thứ 2 đang có tên T01, sheet ở index thứ 3 đang có tên T02.... vân... vân... đại khái thế!
Vậy ngay từ đầu chạy code đã bị trùng tên
Trường hợp này tính sao?
Cái vụ đổi tên sheet thấy dễ nhưng cũng không phải dễ

Ủa, gì đó anh?
Em có dòng thứ 2 trong sub để lường tới những cái anh nói đó.
"On Error Resume Next ''Tên sheet không chứa các ký tự đặc biêt: ?/\* và không trùng tên nhau"

Gán cái tên mới có một dòng nhưng bẫy lỗi thì cần nhiều dòng...
Chủ thớt hay ai đó muốn không muốn "vỡ" thì tự làm tiếp thôi, em bận rồi.

  • #7

Ủa, gì đó anh?
Em có dòng thứ 2 trong sub để lường tới những cái anh nói đó.
"On Error Resume Next ''Tên sheet không chứa các ký tự đặc biêt: ?/\* và không trùng tên nhau"

Gán cái tên mới có một dòng nhưng bẫy lỗi thì cần nhiều dòng...
Chủ thớt hay ai đó muốn không muốn "vỡ" thì tự làm tiếp thôi, em bận rồi.

Tôi cũng chỉ nói theo những gì tôi biết.
Với bài toán đổi tên nhiều sheets theo list cho trước, ai có hứng thú bàn xem ai có giải thuật tốt nhất thì ta tiếp. Không hứng thì thôi vậy

  • #8

Em chạy thử và thấy khá ưng với cách của bác @befaint.
Em có 2 sheet giống hệt nhau (Do không để ý nên đã nhân bản 2 lần). Vậy là 1 sheet đằng trước đổi tên, sheet đằng sau thì tên giữ nguyên.

Có trường hợp thế này sẽ phá vỡ "thế trận":
- Ta đang có 20 sheet
- Cell A1 các sheet có giá trị lần lượt là: T01, T02... đến T20
- Xui xẻo, sheet ở index thứ 2 đang có tên T01, sheet ở index thứ 3 đang có tên T02.... vân... vân... đại khái thế!
Vậy ngay từ đầu chạy code đã bị trùng tên
Trường hợp này tính sao?
Cái vụ đổi tên sheet thấy dễ nhưng cũng không phải dễ

Hiện em có 1 vấn đề vẫn liên quan đến gán tên sheet. Mong được các bác GPE giúp đỡ. Bác @ndu96081631 và mọi người chỉ giúp em với ạ.
Đề bài:
- Em có 20 sheet: T01, T02, ... T20
- Tại sheet: TỔNG HỢP
A1 = T01
A2 = T02
...
A20 = T20
-> Bây giờ em muốn tại sheet TỔNG HỢP, cột B dùng giá trị bên cột A để chọn sheet tương ứng.
Ví dụ khi tính tổng:
B1 = IFERROR(SUM('T01'!N6:W6);"")
B2 = IFERROR(SUM('T02'!N6:W6);"")
...
B20 = IFERROR(SUM('T20'!N6:W6);"")

  • #9

Có cách nào đổi tên Sheet hàng loạt = ô A1 trong mỗi Sheet không ạ?
Em có 1 file excel rất nhiều Sheet: Sheet 1, Sheet 2, .... khoảng vài trăm cái có form giống nhau.
A1 dạng chuỗi: AT02D ; CB12T; ...

Theo tôi thì chẳng cần theo dõi vài trăm cái sheet khi mẫu giống nhau làm gì (chỉ có nội dung là khác). Chỉ cần 2 sheet là đủ:
1/ Thiết kế 1 sheet theo dõi.
2/ Làm 1 sheet mẫu (bạn nên đưa 1 cái mẫu lên), dùng sheet này lưu dữ liệu cần vào sheet theo dõi, muốn xem lại nội dung cái gì? (biên bản, giấy mời, tờ trình..v..v...) thì dùng số của nó để truy vấn lại (cũng tại sheet này).

Cũng có thể sheet mẫu đó, khi nhập nội dung xong thì Add sheet mới với tên sheet là nội dung của 1 Cell nào đó?

  • #10

Anh sếp em yêu cầu phải như thế. Em biết làm sao bây giờ ^^. Tài liệu riêng tư lại không được up lên.
- Có nhiều sheet vì là: mỗi nhân viên nộp báo cáo ngày khoảng 20 khách hàng. Các nhân viên không được biết đến số liệu của nhau. Nên không làm 1 sheet tổng hợp rồi cho ae cùng làm luôn được. Công việc em là gop hết các số liệu chính trong các sheet của anh em lại.

Theo tôi thì chẳng cần theo dõi vài trăm cái sheet khi mẫu giống nhau làm gì (chỉ có nội dung là khác). Chỉ cần 2 sheet là đủ:
1/ Thiết kế 1 sheet theo dõi.
2/ Làm 1 sheet mẫu (bạn nên đưa 1 cái mẫu lên), dùng sheet này lưu dữ liệu cần vào sheet theo dõi, muốn xem lại nội dung cái gì? (biên bản, giấy mời, tờ trình..v..v...) thì dùng số của nó để truy vấn lại (cũng tại sheet này).

Cũng có thể sheet mẫu đó, khi nhập nội dung xong thì Add sheet mới với tên sheet là nội dung của 1 Cell nào đó?

  • #11

Anh sếp em yêu cầu phải như thế. Em biết làm sao bây giờ ^^. Tài liệu riêng tư lại không được up lên.
- Có nhiều sheet vì là: mỗi nhân viên nộp báo cáo ngày khoảng 20 khách hàng. Các nhân viên không được biết đến số liệu của nhau. Nên không làm 1 sheet tổng hợp rồi cho ae cùng làm luôn được. Công việc em là gop hết các số liệu chính trong các sheet của anh em lại.

Cái sheet mẫu bạn không biết giả định à, tên thì ông A, bà B, địa chỉ thì An Giang, Vũng Tàu, Minh Hải. Còn hàng hóa thì xoài, ổi, mận để người ta còn biết vị trí của từng Cell đó nằm chỗ nào?

Bạn không đọc kỹ bài 9 tôi nêu thế này:
Cũng có thể dùng sheet mẫu đó, khi nhập nội dung vào sheet mẫu xong thì Add sheet mới với tên sheet là nội dung của 1 Cell nào đó?
Nghĩa là cách làm thì và theo dõi như tôi nêu ở bài 9, chỉ khác nội dung bạn nêu tại bài 1 là dùng 1 sheet mẫu khi in xong thì Add Sheet là có tất cả các sheet, còn nội dung thì lưu vào sheet theo dõi để còn tổng hợp báo cáo.

Tôi chỉ góp ý và nêu cách làm. Còn lại là người theo dõi thích kiểu gì?

Lần chỉnh sửa cuối: 2/3/18

  • #12

Em hiểu ý bác mà. Làm 1 Sheet mẫu (sheet này cố định, tổng hợp, lấy số liệu bằng cách liên kết tất cả các sheet kia lại)
Nhưng cái form nó không giống nhau hoàn toàn. Yêu cầu tổng hợp mỗi lúc lại khác. Khó làm 1 sheet mẫu lắm bác ạ

Cái sheet mẫu bạn không biết giả định à, tên thì ông A, bà B, địa chỉ thì An Giang, Vũng Tàu, Minh Hải. Còn hàng hóa thì xoài, ổi, mận để người ta còn biết vị trí của từng Cell đó nằm chỗ nào?

Bạn không đọc kỹ bài 9 tôi nêu thế này:
Cũng có thể dùng sheet mẫu đó, khi nhập nội dung vào sheet mẫu xong thì Add sheet mới với tên sheet là nội dung của 1 Cell nào đó?
Nghĩa là cách theo dõi như bài 9 tôi nêu, chỉ khác nội dung bạn nêu bài 1 là dùng 1 sheet mẫu khi in xong thì Add Sheet là có tất cả các sheet, còn nội dung thì lưu vào sheet theo dõi để còn tổng hợp báo cáo.

  • #13

Còn muốn làm theo kiểu bạn thì thế này:
1/ Lấy danh sách tên sheet vào 1 cột nào đó.
2/ Gõ tên sheet vào 1 cột khác với tên sheet mới với Cell tương ứng và đổi tên sheet.

  • #14

Em hiểu ý bác mà. Làm 1 Sheet mẫu (sheet này cố định, tổng hợp, lấy số liệu bằng cách liên kết tất cả các sheet kia lại)
Nhưng cái form nó không giống nhau hoàn toàn. Yêu cầu tổng hợp mỗi lúc lại khác. Khó làm 1 sheet mẫu lắm bác ạ

Tại bạn không hiểu, chứ thực tế bạn có 10 loại mẫu khác nhau cũng làm được và cũng chỉ lưu dữ liệu vào 1 sheet theo dõi.

Nói chung, không có liên kết gì cả chỉ cần 1 sheet theo dõi là làm được tất cả các thứ cần. Tôi ví dụ công việc là 1 thửa đất nông nghiệp và sheet theo dõi nó là 1 cái kho (chứa tất cả mọi thứ công cụ), muốn cuốc đất, cắt cỏ, chặt cây ..v..v.....Thì vào kho lấy cái công cụ tương ứng cho phù hợp với công việc đó.

Lần chỉnh sửa cuối: 2/3/18

  • #15

E nghĩ mãi rồi không thông bác ạ

Tại bạn không hiểu, chứ thực tế bạn có 10 loại mẫu khác nhau cũng làm được và cũng chỉ lưu dữ liệu vào 1 sheet theo dõi.

Nói chung, không có liên kết gì cả chỉ cần 1 sheet theo dõi là làm được tất cả các thứ cần. Tôi ví dụ công việc là 1 thửa đất nông nghiệp và sheet theo dõi nó là 1 cái kho (chứa tất cả mọi thứ công cụ), muốn cuốc đất, cắt cỏ, chặt cây ..v..v.....Thì vào kho lấy cái công cụ tương ứng cho phù hợp với công việc đó.

Hiện em mới nghĩ ra cách thủ công này:
1/ Tạo cột phụ C:
C1: IFERROR(SUM('T01'!N6:W6);"")
C2: IFERROR(SUM('T01'!N6:W6);"")
..
C20: IFERROR(SUM('T01'!N6:W6);"")
(cột C dạng text, không có dấu "=")
2/ Tạo cột phụ D:
D1: =REPLACE(C1,14,3,A1) -> Trả về kết quả dạng text, không có dấu "=" -> D1: IFERROR(SUM('T01'!N6:W6);"")
D2: =REPLACE(C2,14,3,A1) -> Trả về kết quả dạng text, không có dấu "=" -> D2: IFERROR(SUM('T02'!N6:W6);"")
..
D20: =REPLACE(C3,14,3,A1) -> Trả về kết quả dạng text, không có dấu "=" -> D20: IFERROR(SUM('T20'!N6:W6);"")
3/ Tạo cột phụ E:
- Copy cột D -> Paste value lên cột E
- Ctrl + H: thay đổi "IFERROR" thành "=IFERROR"

Hơi mất công chút ^^!

  • #16

E nghĩ mãi rồi không thông bác ạ

Hiện em mới nghĩ ra cách thủ công này:
1/ Tạo cột phụ C:
C1: IFERROR(SUM('T01'!N6:W6);"")
C2: IFERROR(SUM('T01'!N6:W6);"")
..
C20: IFERROR(SUM('T01'!N6:W6);"")
(cột C dạng text, không có dấu "=")
2/ Tạo cột phụ D:
D1: =REPLACE(C1,14,3,A1) -> Trả về kết quả dạng text, không có dấu "=" -> D1: IFERROR(SUM('T01'!N6:W6);"")
D2: =REPLACE(C2,14,3,A1) -> Trả về kết quả dạng text, không có dấu "=" -> D2: IFERROR(SUM('T02'!N6:W6);"")
..
D20: =REPLACE(C3,14,3,A1) -> Trả về kết quả dạng text, không có dấu "=" -> D20: IFERROR(SUM('T20'!N6:W6);"")
3/ Tạo cột phụ E:
- Copy cột D -> Paste value lên cột E
- Ctrl + H: thay đổi "IFERROR" thành "=IFERROR"

Hơi mất công chút ^^!

Có cách nào thay đổi tên sheet theo kiểu: T01, T02, T03....
Sheet Tổng hợp:
- A1: Sum('T01'!A1:B1)
- A2: Sum('T02'!A1:B1)
- A3: Sum('T03'!A1:B1)
Số sheet tăng dần

  • #17

Có cách nào thay đổi tên sheet theo kiểu: T01, T02, T03....
Sheet Tổng hợp:
- A1: Sum('T01'!A1:B1)
- A2: Sum('T02'!A1:B1)
- A3: Sum('T03'!A1:B1)
Số sheet tăng dần

Có vài cách, bạn thử gửi file lên xem cụ thể ra sao.

Lần chỉnh sửa cuối: 23/3/21

  • #18

Có cách nào thay đổi tên sheet theo kiểu: T01, T02, T03....
Sheet Tổng hợp:
- A1: Sum('T01'!A1:B1)
- A2: Sum('T02'!A1:B1)
- A3: Sum('T03'!A1:B1)
Số sheet tăng dần

Bạn mới có sáng kiến mà chưa chịu suy nghĩ đến hậu quả của sáng kiến ấy.
1. Sheet tổng hợp tên gì?
2. kể từ sheet nào có thứ tự? hay đổi tên mọi sheet chỉ chừa sheet tổng hợp thôi?

Chủ đề