Xin giúp em về Tự động trích xuất dữ liệu (1 người xem)

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

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

ohho84

Thành viên chính thức
Tham gia
11/8/11
Bài viết
94
Được thích
2
Chào mọi người. Vấn đề của em em đã viết cụ thể trong file đính kèm. Mong mọi người giúp em ạ.

Nếu có thể giải quyết giúp em bằng VBA thì hay nhất vì trên thực tế data của em rất lớn. Em e ngại dùng công thức exel sẽ kéo không nổi+-+-+-+.
Em mong nhận được hồi âm sớm --=0

Hix. Có ai giúp em với. Anh ndu có đó ko giúp em với ạ --)(
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Hix. Có ai giúp em với. Anh ndu có đó ko giúp em với ạ --)(
Dùng VBA cho thí dụ của bạn thì chỉ có một câu lệnh là xong.
Bạn nên đưa file thật của bạn lên xem cấu trúc 20 cột & 3000 dòng như thế nào ( dữ liệu giả định thôi) để viết luôn cho bạn một lần khỏi mắc công sửa +-+-+-++-+-+-++-+-+-+
 
Chào mọi người. Vấn đề của em em đã viết cụ thể trong file đính kèm. Mong mọi người giúp em ạ.

Nếu có thể giải quyết giúp em bằng VBA thì hay nhất vì trên thực tế data của em rất lớn. Em e ngại dùng công thức exel sẽ kéo không nổi+-+-+-+.
Em mong nhận được hồi âm sớm --=0
Bạn chọn vùng D3:D12, nhập vào công thức này và kết thúc bằng tổ hợp Ctrl+Shift+Enter:
Mã:
=OFFSET(B1,MATCH(9^99,B:B,1)-10,0,10)
Mình nghĩ với bài này không cần thiết phải dùng đến VBA.
 
Bạn thử cách củ chuối này.
PHP:
Sub locra()
If Sheet1.[B65000].End(xlUp).Row > 3 Or Sheet1.[F65000].End(xlUp).Row > 3 Then
With Sheet1.Range("B3:B" & Sheet1.[B65000].End(xlUp).Row)
.Offset(, 2).Resize(10).Value = Sheet1.Range("B" & (Sheet1.[B65000].End(xlUp).Row - 9) & ":B" & Sheet1.[B65000].End(xlUp).Row).Value
.Offset(, 6).Resize(10).Value = Sheet1.Range("F" & (Sheet1.[F65000].End(xlUp).Row - 9) & ":F" & Sheet1.[F65000].End(xlUp).Row).Value
End With
End If
End Sub
 

File đính kèm

Dùng VBA cho thí dụ của bạn thì chỉ có một câu lệnh là xong.
Bạn nên đưa file thật của bạn lên xem cấu trúc 20 cột & 3000 dòng như thế nào ( dữ liệu giả định thôi) để viết luôn cho bạn một lần khỏi mắc công sửa +-+-+-++-+-+-++-+-+-+
Tks bạn! Mình đính kèm file dữ liệu mình đang làm. Do GPE chỉ cho up tối da 1mb nên mình nén lại thành file rar. Mong bạn giúp mình. Mình đợi hồi âm của bạn. --=0
 

File đính kèm

Bạn thử cách củ chuối này.
PHP:
Sub locra()
If Sheet1.[B65000].End(xlUp).Row > 3 Or Sheet1.[F65000].End(xlUp).Row > 3 Then
With Sheet1.Range("B3:B" & Sheet1.[B65000].End(xlUp).Row)
.Offset(, 2).Resize(10).Value = Sheet1.Range("B" & (Sheet1.[B65000].End(xlUp).Row - 9) & ":B" & Sheet1.[B65000].End(xlUp).Row).Value
.Offset(, 6).Resize(10).Value = Sheet1.Range("F" & (Sheet1.[F65000].End(xlUp).Row - 9) & ":F" & Sheet1.[F65000].End(xlUp).Row).Value
End With
End If
End Sub

Tks bạn! Mình sẽ thử xem. Nhưng nếu nó củ chuồi thật thì nếu được bạn cho mình xin cách nào nhanh hơn và nhẹ hơn nữa nhé. Tks bạn nhiều nhiều}}}}}}}}}}}}}}}
 
Bạn chọn vùng D3:D12, nhập vào công thức này và kết thúc bằng tổ hợp Ctrl+Shift+Enter:
Mã:
=OFFSET(B1,MATCH(9^99,B:B,1)-10,0,10)
Mình nghĩ với bài này không cần thiết phải dùng đến VBA.
Đây là file dữ liệu thật của mình. Nó sẽ còn tăng lên nữa. Mình sẽ thử cách của bạn nhưng ko biết Exel nó có kéo nổi không. Vì file gốc của mình cũng đã rất nhiều công thức. Tks bạn nhiều nhé
 

File đính kèm

Tks bạn! Mình đính kèm file dữ liệu mình đang làm. Do GPE chỉ cho up tối da 1mb nên mình nén lại thành file rar. Mong bạn giúp mình. Mình đợi hồi âm của bạn. --=0
1- Bạn muốn kết quả xuất ra nằm ở chỗ nào ???
2- Những cột từ HC ==> HF không đủ 220 dòng dữ liệu thì tính sao ???
+-+-+-++-+-+-++-+-+-+
 
:=\+ Sr bạn. Những cột ko đủ 220 dòng thì bỏ bạn ạ. Bạn trích xuất ra một sheet khác giùm mình đc ko +-+-+-++-+-+-++-+-+-+
Thử sửa dữ liệu ở sheet Op, chọn sheet 1 xem kết quả
Thân
Só-Zì mình đưa nhầm file, bạn sửa giúp mình tý:
Right Click vào sheet1 ==> View Code ==> dán code này đè vào cái cũ nhé
Mã:
Private Sub Worksheet_Activate()
    Dim I, K
    On Error Resume Next
    [B2:AE221].ClearContents
        For I = 205 To 242
            If I = 215 Then I = 219
            If I = 229 Then I = 233
            K = K + 1
            [a2].Offset(, K).Resize(220).Value = Sheets("Op").Cells(50000, I).End(xlUp)(-218).Resize(220).Value
        Next I
End Sub
Thân
 

File đính kèm

Lần chỉnh sửa cuối:
Thử sửa dữ liệu ở sheet Op, chọn sheet 1 xem kết quả
Thân
Só-Zì mình đưa nhầm file, bạn sửa giúp mình tý:
Right Click vào sheet1 ==> View Code ==> dán code này đè vào cái cũ nhé
Mã:
Private Sub Worksheet_Activate()
    Dim I, K
    On Error Resume Next
    [B2:AE221].ClearContents
        For I = 205 To 242
            If I = 215 Then I = 219
            If I = 229 Then I = 233
            K = K + 1
            [a2].Offset(, K).Resize(220).Value = Sheets("Op").Cells(50000, I).End(xlUp)(-218).Resize(220).Value
        Next I
End Sub
Thân

Hehe! Mình đã làm được. Thật là tình cờ và thật là bất ngờ. Tks cậu nhá. Thật là lợi hại @#$

Cảm ơn các Hảo bằng hữu nhé. Đã xong! :Rooster:
 
Chỉnh sửa lần cuối bởi điều hành viên:
Web KT

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

Back
Top Bottom