Người mới học VBA, gặp khó khăn: Cú pháp, lý luận, thuật toán trong VBA thì vào đây cùng học!

Liên hệ QC

Cô Bé Dễ Thương

Thành viên thường trực
Tham gia
30/9/16
Bài viết
223
Được thích
48
Giới tính
Nữ
Các bạn cùng giống vấn đề như mình, xin hãy chỉ post bài tóm lược và trọng tâm nhất có thể (ngán nhất nhưng phải trọng tâm, xin cảm ơn)
Xin phép ban điều hành GPE cho cháu lập chủ đề này! Khi học VBA cháu thấy khó tìm và không tự nghĩ ra được cú pháp và lý luận dùng trong lập trình VBA.
Chăm đọc code cũng chỉ tìm hiểu được cú pháp và lý luận trong code nhưng đa phần là 50-50 không tìm thấy và nghĩ ra được. Vấn đề này quả là khó với người mới học code.
Mong chủ đề này được các bậc tiền bối chỉ dạy cho cháu(em) để có chút vốn để mày mò học code. Xin cảm ơn tất cả thật nhiều ạ!
(các bạn cùng giồng vấn đề như mình xin hãy post bài theo kiểu như mình ở dưới)
PHP:
Xin mở đầu bằng câu hỏi mà cháu(em) tìm kiếm mãi không thấy để bắt chước:
===================================================
Dim Rng1 as Range, Rng2 as Range, Rng4 as Range, Rng5 as Range
Dim rg as Range ,Rng as Range
===================================================
Cháu muốn gộp các bảng dữ liệu có cùng cấu trúc: Rng1, Rng2 , Rng3, Rng4, Rng5 thành 1 bảng. Mục đích để có thể dùng biến rg dùng vòng lặp For Each
duyệt từ Rng1 rồi đến Rng2 rồi đến Rng3 rồi đến Rng4 rồi đến Rng5. Hậu quả là phải viết ra 5 Sud để duyệt từng cái 1,nếu không gộp được các
Rng1,Rng2,Rng3,Rng4,Rng5 thành 1 bảng.
For Each rg In (Tất cả Rng1 và Rng2  và Rng3  và Rng4 và Rng5).Rows
................................................
Next rg
===================================================
Vậy cú pháp để cho biến rg duyệt "Tất cả các Rng1 và Rng2  và Rng3  và Rng4 và Rng5" trong một vòng lặp này là gì ạ?[CODE]
 
Lần chỉnh sửa cuối:
- Mảng kết quả song song Dict tức là chưa có Dict.Count, làm sao Redim Dict.Count được
- Nếu skey không tồn tại mới gán 3 cột kết quả, ngược lại sKey tồn tại thì cộng dồn. Thế mới là song song và loại bỏ vòng lặp. Code dưới đây 1 vòng lặp duy nhất chứ không phải 3
PHP:
Sub Dict_Episode_9()
Dim DataRw As Long, sKey As String, Dict, RArr()
Dim ShArr, ColumnArrCode, RowArrCode, ColumnArrQty, RowArrQty, ColumnArrName, RowArrName
Dim DataRwCode As Long, DataRwQty As Long, DataRwName As Long
Dim StoreCode, StoreQty, ItemsName
Set Dict = CreateObject("Scripting.Dictionary")
ShArr = Array(2, 3, 4, 5, 6, 7, 8)
ColumnArrCode = Array(2, 4, 7, 3, 12, 12, 2)
RowArrCode = Array(7, 19, 10, 12, 11, 8, 6)
ColumnArrQty = Array(8, 14, 20, 7, 4, 6, 7)
RowArrQty = Array(9, 7, 15, 4, 17, 13, 13)
ColumArrName = Array(5, 9, 12, 5, 8, 9, 4)
RowArrName = Array(4, 14, 14, 17, 21, 16, 10)
ReDim RArr(1 To 100, 1 To 3)
For Seq = 0 To 6
    With Sheets(ShArr(Seq))
        DataRwCode = .Cells(1000000, ColumnArrCode(Seq)).End(xlUp).Row
        DataRwQty = .Cells(1000000, ColumnArrQty(Seq)).End(xlUp).Row
        DataRwName = .Cells(1000000, ColumArrName(Seq)).End(xlUp).Row
        StoreCode = .Range(.Cells(RowArrCode(Seq), ColumnArrCode(Seq)), _
        .Cells(DataRwCode, ColumnArrCode(Seq) + 1)).Value
        StoreQty = .Range(.Cells(RowArrQty(Seq), ColumnArrQty(Seq)), _
        .Cells(DataRwQty, ColumnArrQty(Seq) + 1)).Value
        ItemsName = .Range(.Cells(RowArrName(Seq), ColumArrName(Seq)), _
        .Cells(DataRwName, ColumArrName(Seq) + 1)).Value
         For i = 1 To UBound(StoreCode, 1)
                mc = StoreCode(i, 1): mq = StoreQty(i, 1)
                If IsEmpty(mc) = False And IsEmpty(mq) = False Then
                    sKey = StoreCode(i, 1)
                    If Not Dict.exists(sKey) Then
                        k = k + 1
                        Dict.Add sKey, k
                        RArr(k, 1) = sKey
                        RArr(k, 2) = ItemsName(i, 1)
                        RArr(k, 3) = StoreQty(i, 1)
                    Else
                        RArr(Dict.Item(sKey), 3) = RArr(Dict.Item(sKey), 3) + StoreQty(i, 1)
                    End If
                End If
        Next
    End With
Next Seq
With Sheets("Data")
    .Range("B3:D100").ClearContents
    .Range("B3").Resize(k, 3) = RArr
    .Range("B2").Resize(k + 1, 3).Sort Range("B2"), xlAscending, Header:=xlYes
End With
End Sub

View attachment 255747
- Tuyệt đẹp. Loay hoay mãi cách ghi chỉ số dòng mà không được. Rồi đâm ra nghi ngờ do mảng nó không liên tục nên không làm được rồi, mà so với code thầy thì thiếu chỗ ước lượng chiều thứ nhất của mảng kết quả song song, và thiếu RArr(k,3) = StoreQty(i,1) nhưng giờ thì tường tận rồi ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
- Vậy đã đến thức cuối cùng Cửu Âm Chân Kinh rồi, thức này có 2 chiêu: 1 là dùng Key nối chuỗi, 2 là ghi lại chỉ số dòng rồi gán vào mảng kết quả(chi tiết và data chuẩn file đính kèm, 2 Sub đều sử dụng lệnh Sort nên các bạn phải ở Sheets("Data" mới Run chạy Code nhé)
- Và đã qua tháng Giêng, năm 2021 Tân Sửu là 1 tuần rồi. Vèo 1 cái hết tháng Giêng. Được thầy @ptm0412 dìu dắt đã đến bài số 9 xử dụng Dictionary. Các bài tập trong TOP rất đa dạng và bao trùm các trường hợp, mà người mới học có thể áp dụng được luôn sau 1 tiếng là ra được kết quả mong muốn. Và có thể mất khoảng 1 tuần cày TOP này là cũng đủ sức đọc code và mày mò tự học. Điều này cũng phản ánh 1 thực trạng của đa số giáo trình là ví dụ quá sơ sài, mà càng đọc càng thấy rồi rắm. chỗ cần ví dụ sâu sắc thì lại hời hợt mà lý thuyết người mới học lại cần như bài #24 của bác @batman1 , bài #26 của chú @ptm0412 và bài #150 của thầy @Quang_Hải đó mới là những lý thuyết người mới học cần thì giáo trình rất ít đề cập. Riêng mình thì học lý thuyết đa phần các giáo trình và xem youtuber là vô bổ mất thời gian. Trong khi đó chỉ cần những ví dụ sâu sắc, từ đó lồng những từ khóa để tra ngược lý thuyết để bổ sung là xong. Quan trong là biết đọc code, sau chế lại, rồi phát huy được nếu định hướng theo nghề lập trình.
- Các dạng bài tập trong TOP:
+ Ban đầu thì các bảng chung 1 Sheet
+ Sau các bảng khác Sheet
+ Sau nữa các bảng có các cột tách rời nhau, rồi đổi vị trí trước sau, rồi so le nhau
+ Cuối cùng là Sheet "Data" lại không có gì luôn.
- Rồi nhờ chú @ptm0412 đưa đi lần lượt giải các bài tập, xuyên suốt là cách duyệt "Xiên Thịt Nướng" của chú quá tối tân, trong quá trình học đó lại biết cả đến code tà đạo của phái Ngũ Độc Giáo của tiền bối @Nhattanktnn, hay cách xử lý cao minh ở bài #141 (...ColumnArrCode(Seq)+1)).Value) của lão đại hiệp @HieuCD phái Võ Đang, hay các đặt biến và duyệt Sheets("CH1","CH2",....) rất chân phương ở bài #87 của lão tiền bối @Ba Tê phái Thiếu Lâm(do bác gán lệnh vào ông sư gõ mõ, cháu xin phép).
- Ban đầu mình muốn đến bài này biên tập và chỉnh sửa code. Nhưng số trang hiện tại không quá nhiều. Mà ai học thì thấy chỗ sai, chỗ sửa lần lượt để có từng bài, sẽ tốt hơn là đọc bài biên tập. Cho nên mình không biên tập lại nữa. Và quan điểm của mình thì sao cho tiết kiệm thời gian học mà nhớ được nhiều và áp dụng xử lý mớ dữ liệu hỗn độn, sau 9 bài này thì ta biết đọc code, có dữ liệu MỊN để học tiếp các hàm con(nếu muốn học nhiều hơn)
- Đáng nhẽ đến đây thì vui vẻ vì đã biết đọc code và tự học được rồi. Nhưng ở bài #113 lại đắc tội với bác @huuthang_bd, trong cuộc sống nếu sơ suất mà để đắc tội kiểu này thì mọi chuyện có thể đảo lộn và sụp đổ nhanh chóng. Rất mong bác @huuthang_bd cho cháu được gửi lời xin lỗi tới bác. Thời điểm đó có một số ý kiến khiến cháu cảm thấy bị áp đặt ý, bị núp lùm, bị để ý khiến cháu ức chế. Rất may được chú Mỹ chỉ cho mới biết được lỗi của mình.Một lần nữa cháu xin lỗi bác @huuthang_bd, đây là bài học nhớ đời với cháu.
- @truongvu317 em học ngành kỹ thuật, nhưng chuyển sang làm kinh doanh rồi ạ. Cái này chẳng thì chẳng có 9 bài Bí Truyền mà áp dụng.
Trước: Sản xuất - Trung Gian - Người Tiêu Dùng, Hiện giờ: Sản xuất - Người Tiêu Dùng. Mà làm sản xuất thì sợ nhất hàng giả hàng nhái, chính quy thì sợ nhất đối thủ này, sản xuất thông thường thì lại kiểu thu hồi công nợ hết sức mệt mỏi, thường thì lãi không thu được khi khách hàng bị bể.
Giờ thì sao ta??????????? Thôi thì Cứ cái gì thành hàng hóa là đổi thành tiền, cái gì giúp cho người khác đỡ mất thời gian và trí tuệ, công sức là dịch vụ. Quan trọng là đừng mắc lỗi như bài #113.
Xin cảm ơn chú Mỹ @ptm0412 hôm nay con xuống núi ạ, hi vọng được gặp thần tượng trong tương lại không xa (chắc là không để chú biết là Cô Bé Dễ Thương rồi hihi)
Xin chúc diễn đàn thành công!
 

File đính kèm

  • Dict_CuuAmChanKinh.xlsm
    1.4 MB · Đọc: 9
Upvote 0
Điều này cũng phản ánh 1 thực trạng của đa số giáo trình là ví dụ quá sơ sài, mà càng đọc càng thấy rồi rắm
Bạn viết vậy phải đưa ra căn cứ đàng hoàng nhé. Không có chuyện viết xơi xơi thế được. Chuyện này hết sức cẩn trọng trước khi đăng lên, không phải chuyện đùa đâu nhé.

Và có thể mất khoảng 1 tuần cày TOP này là cũng đủ sức đọc code và mày mò tự học.
Mấy cái tốp tép này là ý kiến chủ quan, là cái nhìn phiến diện.

Các kiến thức căn bản về cấu trúc chuẩn, các chuẩn liên hệ của bảng tính trải rộng, kế tới là các nội dung cơ bản trong lập trình VBA Excel bạn còn thiếu nhiếu nhiều mà cứ phát biểu ghê gớm vậy?
 
Upvote 0
- Vậy đã đến thức cuối cùng Cửu Âm Chân Kinh rồi, thức này có 2 chiêu: 1 là dùng Key nối chuỗi, 2 là ghi lại chỉ số dòng rồi gán vào mảng kết quả(chi tiết và data chuẩn file đính kèm, 2 Sub đều sử dụng lệnh Sort nên các bạn phải ở Sheets("Data" mới Run chạy Code nhé)
- Và đã qua tháng Giêng, năm 2021 Tân Sửu là 1 tuần rồi. Vèo 1 cái hết tháng Giêng. Được thầy @ptm0412 dìu dắt đã đến bài số 9 xử dụng Dictionary. Các bài tập trong TOP rất đa dạng và bao trùm các trường hợp, mà người mới học có thể áp dụng được luôn sau 1 tiếng là ra được kết quả mong muốn. Và có thể mất khoảng 1 tuần cày TOP này là cũng đủ sức đọc code và mày mò tự học. Điều này cũng phản ánh 1 thực trạng của đa số giáo trình là ví dụ quá sơ sài, mà càng đọc càng thấy rồi rắm. chỗ cần ví dụ sâu sắc thì lại hời hợt mà lý thuyết người mới học lại cần như bài #24 của bác @batman1 , bài #26 của chú @ptm0412 và bài #150 của thầy @Quang_Hải đó mới là những lý thuyết người mới học cần thì giáo trình rất ít đề cập. Riêng mình thì học lý thuyết đa phần các giáo trình và xem youtuber là vô bổ mất thời gian. Trong khi đó chỉ cần những ví dụ sâu sắc, từ đó lồng những từ khóa để tra ngược lý thuyết để bổ sung là xong. Quan trong là biết đọc code, sau chế lại, rồi phát huy được nếu định hướng theo nghề lập trình.
- Các dạng bài tập trong TOP:
+ Ban đầu thì các bảng chung 1 Sheet
+ Sau các bảng khác Sheet
+ Sau nữa các bảng có các cột tách rời nhau, rồi đổi vị trí trước sau, rồi so le nhau
+ Cuối cùng là Sheet "Data" lại không có gì luôn.
- Rồi nhờ chú @ptm0412 đưa đi lần lượt giải các bài tập, xuyên suốt là cách duyệt "Xiên Thịt Nướng" của chú quá tối tân, trong quá trình học đó lại biết cả đến code tà đạo của phái Ngũ Độc Giáo của tiền bối @Nhattanktnn, hay cách xử lý cao minh ở bài #141 (...ColumnArrCode(Seq)+1)).Value) của lão đại hiệp @HieuCD phái Võ Đang, hay các đặt biến và duyệt Sheets("CH1","CH2",....) rất chân phương ở bài #87 của lão tiền bối @Ba Tê phái Thiếu Lâm(do bác gán lệnh vào ông sư gõ mõ, cháu xin phép).
- Ban đầu mình muốn đến bài này biên tập và chỉnh sửa code. Nhưng số trang hiện tại không quá nhiều. Mà ai học thì thấy chỗ sai, chỗ sửa lần lượt để có từng bài, sẽ tốt hơn là đọc bài biên tập. Cho nên mình không biên tập lại nữa. Và quan điểm của mình thì sao cho tiết kiệm thời gian học mà nhớ được nhiều và áp dụng xử lý mớ dữ liệu hỗn độn, sau 9 bài này thì ta biết đọc code, có dữ liệu MỊN để học tiếp các hàm con(nếu muốn học nhiều hơn)
- Đáng nhẽ đến đây thì vui vẻ vì đã biết đọc code và tự học được rồi. Nhưng ở bài #113 lại đắc tội với bác @huuthang_bd, trong cuộc sống nếu sơ suất mà để đắc tội kiểu này thì mọi chuyện có thể đảo lộn và sụp đổ nhanh chóng. Rất mong bác @huuthang_bd cho cháu được gửi lời xin lỗi tới bác. Thời điểm đó có một số ý kiến khiến cháu cảm thấy bị áp đặt ý, bị núp lùm, bị để ý khiến cháu ức chế. Rất may được chú Mỹ chỉ cho mới biết được lỗi của mình.Một lần nữa cháu xin lỗi bác @huuthang_bd, đây là bài học nhớ đời với cháu.
- @truongvu317 em học ngành kỹ thuật, nhưng chuyển sang làm kinh doanh rồi ạ. Cái này chẳng thì chẳng có 9 bài Bí Truyền mà áp dụng.
Trước: Sản xuất - Trung Gian - Người Tiêu Dùng, Hiện giờ: Sản xuất - Người Tiêu Dùng. Mà làm sản xuất thì sợ nhất hàng giả hàng nhái, chính quy thì sợ nhất đối thủ này, sản xuất thông thường thì lại kiểu thu hồi công nợ hết sức mệt mỏi, thường thì lãi không thu được khi khách hàng bị bể.
Giờ thì sao ta??????????? Thôi thì Cứ cái gì thành hàng hóa là đổi thành tiền, cái gì giúp cho người khác đỡ mất thời gian và trí tuệ, công sức là dịch vụ. Quan trọng là đừng mắc lỗi như bài #113.
Xin cảm ơn chú Mỹ @ptm0412 hôm nay con xuống núi ạ, hi vọng được gặp thần tượng trong tương lại không xa (chắc là không để chú biết là Cô Bé Dễ Thương rồi hihi)
Xin chúc diễn đàn thành công!
Luyện cửu âm chân kinh nên đi từ căn bản, luyện kiểu bạn dể trở thành Mai Siêu Phong thời @
 
Upvote 0
Bạn viết vậy phải đưa ra căn cứ đàng hoàng nhé. Không có chuyện viết xơi xơi thế được. Chuyện này hết sức cẩn trọng trước khi đăng lên, không phải chuyện đùa đâu nhé.


Mấy cái tốp tép này là ý kiến chủ quan, là cái nhìn phiến diện.

Các kiến thức căn bản về cấu trúc chuẩn, các chuẩn liên hệ của bảng tính trải rộng, kế tới là các nội dung cơ bản trong lập trình VBA Excel bạn còn thiếu nhiếu nhiều mà cứ phát biểu ghê gớm vậy?
Cháu biết các bác các thầy đều là người chuyên sâu về lập trình và kiếm usd bằng lập trình. Ý kiến của cháu dành cho ai cần áp dụng, thiếu thời gian để tự mình ra sản phẩm. Và ý kiến của cháu là tìm thấy các giáo trình ngoài diễn đàn nó rất sơ sài bác ạ.
Và 1 tiết lộ thú vị nữa là cháu chẳng biết tý gì tiếng Anh.
Không biết Tiếng Anh, nên khi cháu đọc code đều nạp vào bộ nhớ theo hình ảnh.
Bởi cháu học tiếng Pháp, lâu rồi cũng chỉ biết đếm từ 1 đến 5.
Cháu chúc bác sức khỏe và luôn vui vẻ
 
Lần chỉnh sửa cuối:
Upvote 0
Xin cảm ơn chú Mỹ @ptm0412 hôm nay con xuống núi ạ, hi vọng được gặp thần tượng trong tương lại không xa (chắc là không để chú biết là Cô Bé Dễ Thương rồi hihi)
Chưa hết đâu. Đối phó với việc Data chỉ 1 ô không gán vào mảng được, bác @HieuCD bảo thêm 1 cột và đã làm theo, cách này có nguy cơ hao tổn bộ nhớ khi dữ liệu lớn, nay có cách khác nhẹ nhàng hơn (thay vì dùng If tách trường hợp giá trị đơn kéo theo 1 lô 1 lốc các câu lệnh) như sau:
Cách 1: Lấy dư ra 1 dòng thay vì 1 cột, chắc chắn ít hao tổn bộ nhớ hơn, nhưng phải có If để loại sKey rỗng
Cách 2: Thêm dòng hoặc thêm cột như trên, nhưng dùng hàm IIf để cho gọn:
Mã:
        StoreCode = .Range(.Cells(RowArrCode(Seq), ColumnArrCode(Seq)), _
        .Cells(DataRwCode, ColumnArrCode(Seq) + _
        IIf( DataRwCode = RowArrCode(Seq), 1, 0))).Value
Như vậy chỉ sheet nào chỉ có 1 dòng dữ liệu mới thêm 1 cột/ hoặc thêm 1 dòng cho mảng.
Dict - Item - Mảng còn vô vàn điều khác chứ chưa hết đâu.
_________
Ngoài ra theo góp ý của các đại ca ở trên (@befaint, @huuthang_bd), các chú bác khác, và cả tôi nữa, còn nhiều điều căn bản phải học (đáng lẽ trước cả vòng lặp, chứ đừng nói mảng và Dict). Các lỗi khác cần phải khắc phục:
- Chưa khai báo biến đầy đủ (code bài 160 tôi phải khai báo bổ sung hàng tỷ biến)
- Tên biến chưa đặt theo ý nghĩa của giá trị biến (cứ copy code bài trước qua bài sau vô tội vạ)
- Suy luận logic chưa thấu đáo, chắc chắn là chưa từng viết cái thuật toán ra giấy để mà nghiền ngẫm chỉnh sửa.
- Copy câu lệnh bên trên xuống bên dưới, bài này sang bài nọ mà không hiểu thấu đáo câu lệnh, dẫn đến sai hoặc lỗi.
 
Upvote 0
Chưa hết đâu. Đối phó với việc Data chỉ 1 ô không gán vào mảng được, bác @HieuCD bảo thêm 1 cột và đã làm theo, cách này có nguy cơ hao tổn bộ nhớ khi dữ liệu lớn, nay có cách khác nhẹ nhàng hơn (thay vì dùng If tách trường hợp giá trị đơn kéo theo 1 lô 1 lốc các câu lệnh) như sau:
Cách 1: Lấy dư ra 1 dòng thay vì 1 cột, chắc chắn ít hao tổn bộ nhớ hơn, nhưng phải có If để loại sKey rỗng
Cách 2: Thêm dòng hoặc thêm cột như trên, nhưng dùng hàm IIf để cho gọn:
Mã:
        StoreCode = .Range(.Cells(RowArrCode(Seq), ColumnArrCode(Seq)), _
        .Cells(DataRwCode, ColumnArrCode(Seq) + _
        IIf( DataRwCode = RowArrCode(Seq), 1, 0))).Value
Như vậy chỉ sheet nào chỉ có 1 dòng dữ liệu mới thêm 1 cột/ hoặc thêm 1 dòng cho mảng.
Dict - Item - Mảng còn vô vàn điều khác chứ chưa hết đâu.
_________
Ngoài ra theo góp ý của các đại ca ở trên (@befaint, @huuthang_bd), các chú bác khác, và cả tôi nữa, còn nhiều điều căn bản phải học (đáng lẽ trước cả vòng lặp, chứ đừng nói mảng và Dict). Các lỗi khác cần phải khắc phục:
- Chưa khai báo biến đầy đủ (code bài 160 tôi phải khai báo bổ sung hàng tỷ biến)
- Tên biến chưa đặt theo ý nghĩa của giá trị biến (cứ copy code bài trước qua bài sau vô tội vạ)
- Suy luận logic chưa thấu đáo, chắc chắn là chưa từng viết cái thuật toán ra giấy để mà nghiền ngẫm chỉnh sửa.
- Copy câu lệnh bên trên xuống bên dưới, bài này sang bài nọ mà không hiểu thấu đáo câu lệnh, dẫn đến sai hoặc lỗi.
Vậy là có cả cách cao siêu này nữa.
Do khả năng lưu bộ nhớ là hình ảnh thiên về ra kết quả luôn nên có bỏ sót những thứ mà code đổi ra usd phải có.
Và Array đúng là môn nội công thâm hậu, còn Dictionary như "Thần Khí" và đương nhiên xử dụng bất kỳ vũ khí hay thần khí nào thì phải có nội công thâm hậu (Array).
Chú đừng thức khuya nhé!
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Cái gì mà khuya tầm này?

Nếu lỡ có gặp thì luôn luôn đội mũ bảo hiểm trên đầu, 1 là bị kú lủng đầu, 2 là bị tưới nước sôi
Dạ. Chịu được hết ạ.
Giờ cháu mới khai xuân đầu năm đây ạ. Bề bộn quá. Gọn gàng ngon lành làm chuyến xuyên Việt ạ.
 
Upvote 0
Upvote 0
Em nhờ các anh chị giúp đỡ em với ạ. Em đang có nhiều file excel, mỗi file một sheet có tên "Danh sách hưởng TCTN". Do tên sheet dài nên khi em thực hiện ghép file đều bị báo lỗi. Nếu giờ đổi tên thủ công thì sẽ mất rất nhiều thời gian vì mỗi một tháng có khoảng 60-100 file cần ghép ạ. Mong anh chị chỉ giáo giúp em có cách nào không ạ? Em cảm ơn rất nhiều ạ
 
Upvote 0
Em nhờ các anh chị giúp đỡ em với ạ. Em đang có nhiều file excel, mỗi file một sheet có tên "Danh sách hưởng TCTN". Do tên sheet dài nên khi em thực hiện ghép file đều bị báo lỗi. Nếu giờ đổi tên thủ công thì sẽ mất rất nhiều thời gian vì mỗi một tháng có khoảng 60-100 file cần ghép ạ. Mong anh chị chỉ giáo giúp em có cách nào không ạ? Em cảm ơn rất nhiều ạ
Tôi nghĩ không phải lỗi do tên sheet dài mà do tên file có vấn đề.

1) Nếu tên file viết liền nhau, không có dấu, không có khoảng trắng và không có ký tự đặt biệt, ví dụ như: TenFileCanGhep hoặc Ten_File_Can_Ghep cách viết tên file như sau:
Mã:
=[TenFileCanGhep.xlsm]Sheet1!$A$1

=[Ten_File_Can_Ghep.xlsm]Sheet1!$A$1

2) Nếu như tên có dấu tiếng Việt hoặc có khoảng trắng hoặc có chứa ký tự đặc biệt, ví dụ như: Tên File Cần Ghép hoặc Ten-File-Can-Ghep cách viết tên file như sau:

Mã:
='[Tên File Cần Ghép.xlsm]Sheet1'!$A$1

='[Ten-File-Can-Ghep.xlsm]Sheet1'!$A$1

(1)(2) chỉ khác nhau có 2 dấu nháy (') bao bọc tên file và tên sheet.

Như vậy, nếu mình không xác định được file như thế nào, cứ "phang" cấu trúc (2) là tốt nhất.
 
Upvote 0
Tôi nghĩ không phải lỗi do tên sheet dài mà do tên file có vấn đề.

1) Nếu tên file viết liền nhau, không có dấu, không có khoảng trắng và không có ký tự đặt biệt ví dụ như: TenFileCanGhep hoặc Ten_File_Can_Ghep cách viết tên file như sau:
Mã:
=[TenFileCanGhep.xlsm]Sheet1!$A$1

=[Ten_File_Can_Ghep.xlsm]Sheet1!$A$1

2) Nếu như tên có dấu tiếng Việt hoặc có khoảng trắng hoặc có chứa ký tự đặc biệt, ví dụ như: Tên File Cần Ghép hoặc Ten-File-Can-Ghep cách viết tên file như sau:

Mã:
='[Tên File Cần Ghép.xlsm]Sheet1'!$A$1

='[Ten-File-Can-Ghep.xlsm]Sheet1!'$A$1

(1)(2) chỉ khác nhau có 2 dấu nháy (') bao bọc tên file và tên sheet.

Như vậy, nếu mình không xác định được file như thế nào, cứ "phang" cấu trúc (2) là tốt nhất.
dạ em đã thử đổi tên sheet thành ngắn hơn thì ghép được luôn anh ạ
 
Upvote 0
Upvote 0
dạ e đổi thành số cho nhanh ạ. em chỉ ghi 1, 2, 3....thôi ạ. Còn tên file e vẫn giữ nguyên. Tên file của em là Danh sách chi trả thất nghiệp, Danh sách chi trả thất nghiệp (1)........lần lượt ạ
Ở bài này:

Tên sheet cũng tương tự tên file, nếu có ký tự trắng hay dấu tiếng Việt hay có ký tự đặc biệt đều phải sử dụng dấu nháy bạn nhé.

Do bạn đổi tên sheet lại không có cấu trúc tên sheet như (2) cho nên không phát sinh lỗi, chứ không phải do tên sheet dài hay ngắn bạn nhé.
 
Upvote 0
Ở bài này:

Tên sheet cũng tương tự tên file, nếu có ký tự trắng hay dấu tiếng Việt hay có ký tự đặc biệt đều phải sử dụng dấu nháy bạn nhé.

Do bạn đổi tên sheet lại không có cấu trúc tên sheet như (2) cho nên không phát sinh lỗi, chứ không phải do tên sheet dài hay ngắn bạn nhé.
anh ơi, anh cho em xin số điện thoại add zalo của anh em hỏi với được không ạ? Em gà mới nên ngu ngơ lắm, e ko hiểu được cặn kẽ nên ko biết làm thế nào ạ. Mà lương file lớn lại cần gấp :(
 
Upvote 0
Upvote 0
Web KT
Back
Top Bottom