PDA

View Full Version : lọc dữ liệu ở sheet1 chuyển kết quả sang sheet2.



xda1811
02-05-09, 02:37 PM
Bác Hướng.... hỗ trợ dùm em với
các bác giúp em quả lọc dữ liệu này với
dữ liệu của em để ở sheet 1 . kết quả cần hiện ở sheet2
Yêu cầu :
1.Tại ô D2 của sheet2 lấy 2 số bên phải của ô C2 ( số 10 ) và kiểm tra trong hàng 1 của sheet1. nếu dữ liệu trong hàng 1 có các số bên phải trùng với số 10 hoặc số 01 thì cho hiện số đó tại ô D2.
2.Tại ô G2 sheet2 lấy 2 số bên phải của ô C2 ( số 10 ) và kiểm tra trong hàng 2 của sheet1. nếu dữ liệu trong hàng 2 có các số bên phải trùng với số 10 hoặc số 01 thì cho hiện số đó tại ô G2.
3.Tại ô H2 sheet2 lấy 2 số bên phải của ô C2 ( số 10 ) và kiểm tra trong hàng 3 của sheet1. nếu dữ liệu trong hàng 2 có các số bên phải trùng với số 10 hoặc số 01 thì cho hiện số đó tại ô H2.
......
kiểm tra đến cột AK
mong các bác giúp em
Em cảm ơn các bác

PhanTuHuong
02-05-09, 02:44 PM
Bạn dùng macro4 phải không?

xda1811
02-05-09, 02:52 PM
Bạn dùng macro4 phải không?

em là lính mới mong anh hướng dẫn em, em chưa hiểu nhiều về macro anh ạ. Yêu cầu như vậy thì làm thế nào để ra kết quả chính xác nhất. ( dữ liệu của các hàng có thể cập nhật thêm từng ngày )

Thầy Hướng giúp em đi thầy

ChanhTQ@
02-05-09, 04:51 PM
. . . . .
2.Tại ô G2 sheet2 lấy 2 số bên phải của ô C2 ( số 10 ) và kiểm tra trong hàng 2 của sheet1. nếu dữ liệu trong hàng 2 có các số bên phải trùng với số 10 hoặc số 01 thì cho hiện số đó tại ô G2.
3.Tại ô H2 sheet2 lấy 2 số bên phải của ô C2 ( số 10 ) và kiểm tra trong hàng 3 của sheet1. nếu dữ liệu trong hàng 2 có các số bên phải trùng với số 10 hoặc số 01 thì cho hiện số đó tại ô H2.
...... kiểm tra đến cột AK(1) Tại G3 mình nhập số 2; H3 nhập số 3 . . . . -> vậy 'AK3' sẽ tương ứng với dòng 32;
Nhưng dữ liệu bên S1 chỉ là 30 dòng thì làm sao với 2 cột 'AJ' & 'AK' đây bạn?

(2) Tại D2, G2, H2 . . . hiện nguyên số hay chỉ hiện 2 số đuôi thôi bạn; Bạn viết hiện nguyên số, nhưng viện dẫn chỉ là 2 số đuôi, vậy lần đàng nào?

Chờ tin bạn! :-=

xda1811
02-05-09, 05:28 PM
[quote=ChanhTQ@;154509](1) Tại G3 mình nhập số 2; H3 nhập số 3 . . . . -> vậy 'AK3' sẽ tương ứng với dòng 32;
vâng . AK2 tương ứng với hàng 31 bên S1

Nhưng dữ liệu bên S1 chỉ là 30 dòng thì làm sao với 2 cột 'AJ' & 'AK' đây bạn?

Dữ liệu bên S 1 > 30.... hàng rất nhiều em sợ file excel lớn em ko để vào

(2) Tại D2, G2, H2 . . . hiện nguyên số hay chỉ hiện 2 số đuôi thôi bạn; Bạn viết hiện nguyên số, nhưng viện dẫn chỉ là 2 số đuôi, vậy lần đàng nào?

Chỉ hiện 2 số đuôi, ( VD C2=10, ô G2 của S2 sẽ tìm trong hàng 2 của S1 nếu thấy 10, hoặc 01 thì cho hiện 01, hoặc 10 lênn Ô G2 )
Tương tự H2 sẽ tìm hàng 3 S1
Tương tự I2 sẽ tìm hàng 4 S1
.....
cảm ơn anh

SA_DQ
02-05-09, 09:31 PM
Option Explicit
Sub Filter2()
Dim So2 As Variant, SoD, Sh As Worksheet
Dim Rng As Range, sRng As Range
Dim eRw As Long, Jj As Long

Sheets("Sheet2").Select
So2 = Right("0" & ([c2].Value Mod 100), 2)
SoD = Right("0" & (So2 Mod 10) * 10 + So2 \ 10, 2)

Set Sh = Sheets("sheet1")
eRw = Sh.[a65500].End(xlUp).Row
For Jj = 1 To eRw
Set Rng = Sh.Range(Sh.Cells(Jj, 1), Sh.Cells(Jj, 255).End(xlDown))

Set sRng = Rng.Find(So2, , xlFormulas, xlPart)
If Not sRng Is Nothing Then
If Right(sRng.Value, 2) = So2 Then
sRng.Interior.ColorIndex = 35 '<=|'
If Jj = 1 Then
[d2] = So2
Else
Cells(2, 5 + Jj) = So2
End If
End If
End If

Set sRng = Rng.Find(SoD, , xlFormulas, xlPart)
If Not sRng Is Nothing Then
If Right(sRng.Value, 2) = SoD Then
sRng.Interior.ColorIndex = 39 '<=|'
If Jj = 1 Then
[d2] = SoD
Else
Cells(2, 5 + Jj) = SoD
End If
End If
End If
[d2].Resize(, eRw + 9).NumberFormat = "0#"

Next Jj
End Sub

Chú í khi xài: Kiểm theo màu tô bên 'S1':-=

xda1811
02-05-09, 10:34 PM
em gặp lỗi này anh SA ơi
http://vinaanh.com/images0/5008/m/49fc660b821d3_m.jpg

rosy84
03-05-09, 09:38 AM
bạn hãy xem lại: So2 10
tôi nghĩ là có vấn đề .

ptm0412
03-05-09, 05:30 PM
Code của Bác Sa:

Sheets("Sheet2").Select
So2 = Right("0" & ([c2].Value Mod 100), 2)
SoD = Right("0" & (So2 Mod 10) * 10 + So2 10, 2)

lỗi dòng thứ 3, sửa lại là:


SoD = Right("0" & (So2 Mod 10) * 10 + int(So2 / 10), 2)

tuy nhiên, yêu cầu của tác giả là dò trên 31 dòng của sheet1, mỗi dòng tương ứng với 1 ô của sheet2 từ G đến AK.

File dưới đây làm đúng yêu cầu trên. Phím tắt là Ctrl + Shift +Q

xda1811
03-05-09, 05:56 PM
Code của Bác Sa:

Sheets("Sheet2").Select
So2 = Right("0" & ([c2].Value Mod 100), 2)
SoD = Right("0" & (So2 Mod 10) * 10 + So2 10, 2)lỗi dòng thứ 3, sửa lại là:


SoD = Right("0" & (So2 Mod 10) * 10 + int(So2 / 10), 2)tuy nhiên, yêu cầu của tác giả là dò trên 31 dòng của sheet1, mỗi dòng tương ứng với 1 cột của sheet2 từ G đến AK.

File dưới đây làm đúng yêu cầu trên. Phím tắt là Ctrl + Shift +Q

đúng yêu cầu của bài ra rồi. em cảm ơn các anh, cảm ơn bác SA, anh PTM0412 nhiều lắm, các anh quả là nhiệt tình
chúc các anh vui vẻ, mạnh khỏe
}}}}}

SA_DQ
04-05-09, 06:56 AM
em gặp lỗi này anh SA ơi


Dòng lệnh đó là

SoD = Right("0" & (So2 Mod 10) * 10 + So2 \ 10, 2)
Nhưng khi dùng chức năng [PHP ]. . .[/PHP ] của diễn đàn thì chức năng này chén mất toàn tử '\' của mình; Sẽ rút kinh nghiệm cho những lần sau!

Chứ câu lệnh này mình đã thử trên máy của mình & không sai mới đưa macro lên;
Dùng toán tử này mình thấy tiện hơn thôi; Hơn nữa các số của bạn đâu có số lẽ, phải không?

Sau đó mình chép macro này vô file của bạn mới đưa lên, thì đúng là dòng đó báo lỗi do bị mất toán tử nêu trên;

Trước khi nâng cấp DĐàn, tuy không hiện toán tử '\' nhưng copy đi nới khác vẫn có toán tử kia, giờ thì đúng là nó chén luôn, thật tai hại do vô í!

Xin lỗi bạn nha.

congtai
07-05-09, 09:14 AM
chào các anh! nhờ các anh chỉ giúp với: Hiện công việc của em cần tra rất nhiều bảng tính, có cách nào để việc tra bảng được tự động hơn không, việc tra bảng toàn là nội suy tuyến tính không àh. Mong được giúp đỡ!