coppy dữ liệu từ nhiều file exel (1 người xem)

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

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

denbeo

Thành viên mới
Tham gia
26/8/08
Bài viết
17
Được thích
0
Mh có một file exel cần tổng hợp dữ liệu từ các sheet nhỏ. Nếu dùng lệnh coppy thì đơn thuần mất thời gian. Mh cần tổng hợp dữ liệu từ 27 sheet nhỏ vào bảng tổng hợp chi tiết mà ko cần phải coppy -paste.
Mong mọi người giúp đỡ.
 

File đính kèm

Mh có một file exel cần tổng hợp dữ liệu từ các sheet nhỏ. Nếu dùng lệnh coppy thì đơn thuần mất thời gian. Mh cần tổng hợp dữ liệu từ 27 sheet nhỏ vào bảng tổng hợp chi tiết mà ko cần phải coppy -paste.
Mong mọi người giúp đỡ.
Chào bạn,
Bạn tham khảo cách tổng hợp dữ liệu từ nhiều bảng ở nhiều sheet này nhé:
Cảm ơn bạn!
 
Upvote 0
cảm ơn bạn nhiều, nhưng dữ liệu bạn đưa ví dụ các cột hàng ngang cố định, còn của mh là tên ở cột B được cố định. Loa máy tính đang hỏng nên mh vẫn chưa xem được. hok. bùn ghê
 
Upvote 0
chạy thử code
Mã:
Sub GPE()
Dim Arr(1 To 79, 1 To 28), Darr(), i As Integer, j As Integer, Col As Integer
For j = 5 To 33
  If j = 32 Then j = j + 1
  If Sheets(j).Range("C8").Value = Sheets(4).Range("C9").Value Then
    Darr = Sheets(j).Range("E8:E86").Value
  Else
    Darr = Sheets(j).Range("E9:E87").Value
  End If
  For i = 1 To UBound(Darr)
    If j = 33 Then Col = j - 5 Else Col = j - 4
    Arr(i, Col) = Darr(i, 1)
  Next i
Next j
Sheets(4).Range("E9").Resize(79, 28) = Arr
End Sub
 
Upvote 0
Mh có một file exel cần tổng hợp dữ liệu từ các sheet nhỏ. Nếu dùng lệnh coppy thì đơn thuần mất thời gian. Mh cần tổng hợp dữ liệu từ 27 sheet nhỏ vào bảng tổng hợp chi tiết mà ko cần phải coppy -paste.
Mong mọi người giúp đỡ.
 

File đính kèm

Upvote 0
chạy thử code
Mã:
Sub GPE()
Dim Arr(1 To 79, 1 To 28), Darr(), i As Integer, j As Integer, Col As Integer
For j = 5 To 33
  If j = 32 Then j = j + 1
  If Sheets(j).Range("C8").Value = Sheets(4).Range("C9").Value Then
    Darr = Sheets(j).Range("E8:E86").Value
  Else
    Darr = Sheets(j).Range("E9:E87").Value
  End If
  For i = 1 To UBound(Darr)
    If j = 33 Then Col = j - 5 Else Col = j - 4
    Arr(i, Col) = Darr(i, 1)
  Next i
Next j
Sheets(4).Range("E9").Resize(79, 28) = Arr
End Sub
 
Upvote 0
cảm ơn bạn, nhưng thực tế mh còn chưa biết vba, chưa biết cách để dán đoạn mã code và cho nó chạy thử, hik. Thưc tế trước công việc mh toàn dùng phần mềm, exel chỉ cần dùng căn bản, nay làm mảng này lại chủ yếu dùng exel, nên đang bắt đầu mò mẫm mà thấy khó quá, như ma trận. hok. Bạn có thể dạy mh để dán đoạn mã Code và làm sao để nó chạy thử đươc ko. hihi, nói người chưa biết gì cũng khổ bạn nhỉ
 
Upvote 0
bạn befaint ơi, mh cũng thử làm theo công thức của bạn cho một số sheet, tuy nhiên nó báo lỗi, bạn xem giúp mh lỗi là vì sao nhé, mh tìm ko ra nguyên nhân, cảm ơn các cao thủ nhiều lắm
 

File đính kèm

Upvote 0
cảm ơn bạn, nhưng thực tế mh còn chưa biết vba, chưa biết cách để dán đoạn mã code và cho nó chạy thử, hik. Thưc tế trước công việc mh toàn dùng phần mềm, exel chỉ cần dùng căn bản, nay làm mảng này lại chủ yếu dùng exel, nên đang bắt đầu mò mẫm mà thấy khó quá, như ma trận. hok. Bạn có thể dạy mh để dán đoạn mã Code và làm sao để nó chạy thử đươc ko. hihi, nói người chưa biết gì cũng khổ bạn nhỉ
nếu không biết về VBA thì bạn thiết kế lại file và dùng công thức theo hướng dẫn của bạn Befaint
dùng VBA thì bạn phải Save as lại với đuôi là .xlsm hoặc .xlsb sau đó nhấn đồng thời 2 phím chức năng Alt+F11, chọn insert modul và chép code vào, file nầy khó xử lý bằng VBA vì: thứ tự dòng các sheet không đồng nhất, tên sheet bằng tiếng Việt có dấu và không trùng với tiêu đề cột bảng tổng hợp, nếu giải quyết 3 vấn đề nầy thì code đơn giản và ít bị lổi
 

File đính kèm

Upvote 0
bạn befaint ơi, mh cũng thử làm theo công thức của bạn cho một số sheet, tuy nhiên nó báo lỗi, bạn xem giúp mh lỗi là vì sao nhé, mh tìm ko ra nguyên nhân, cảm ơn các cao thủ nhiều lắm
Lỗi đó là do trong file của bạn không có cái sheet nào tên BĐ Trung tâm (Ô E5). Vã lại tên sheet của bạn hầu như là thừa khoảng trắng phía sau, bạn xóa hết khoảng trắng thừa trong tên sheet và sửa công thức tại ô E6 như sau.
Mã:
=IFERROR(INDIRECT("'"&E$5&"'!E"&ROW($A6)),"")
 
Upvote 0
mh đã sửa lại tên rồi nhưng vẫn ko chạy được
 
Upvote 0
hì, mh sẽ rút kinh nghiệm, để mh sẽ tạo lại và thử xem có được ko. còn cách làm như bạn befaint hướng dẫn mh vẫn chưa làm được, huuhu, sao dốt thế cơ chứ
 
Upvote 0
hì, mh sẽ rút kinh nghiệm, để mh sẽ tạo lại và thử xem có được ko. còn cách làm như bạn befaint hướng dẫn mh vẫn chưa làm được, huuhu, sao dốt thế cơ chứ
bạn phải nhập tiêu đề cột và tên các sheet giống nhau
bạn có thể chọn phía dưới màn hình chổ tên sheet, bấm chuột phải, chọn rename, bấm Ctrl+C, bấm phím Esc, sau đó dán vào tiêu đề cột
 
Upvote 0
Mh đã làm được rồi, cảm ơn các bạn nhiều nhiều lắm
 
Upvote 0
bạn befaint ơi, mh cũng thử làm theo công thức của bạn cho một số sheet, tuy nhiên nó báo lỗi, bạn xem giúp mh lỗi là vì sao nhé, mh tìm ko ra nguyên nhân, cảm ơn các cao thủ nhiều lắm
Giữ lại file đó làm file mẫu... Chép dữ liệu vào các sheets của file đó rồi tính tiếp.
Bạn tìm hiểu về hàm INDIRECT() là sẽ biết cách thôi.
 
Upvote 0
yêu diễn đàn và các cao thủ nhiều lắm, nhờ có các bạn mà mh đã biết một số thứ về exel. :::"""><
 
Upvote 0
Web KT

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

Back
Top Bottom