Dò tìm dữ liệu từ nhiều sheet (1 người xem)

Liên hệ QC

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

ducdinh1987

Thành viên thường trực
Tham gia
10/6/10
Bài viết
266
Được thích
75
Nghề nghiệp
Kỹ sư công nghệ sinh học
anh chị nào giúp em viết code ở file đính kèm với. cảm ơn nhiều.
 

File đính kèm

có anh chị nào giúp không nhỉ. cảm ơn nhiều.
 
Upvote 0
anh chị nào giúp em viết code ở file đính kèm với. cảm ơn nhiều.

Làm cho bạn được 80% rồi nhưng sợ không đúng.
Tạm chỉnh lại cấu trúc file nhưng không biết bạn có đồng ý không nên thôi không viết tiếp
Trận bóng đêm nay mà mình thắng độ thì sẽ viết tiếp còn thua thì ... hix
 

File đính kèm

Upvote 0
anh chị nào biết cách khác không chỉ em với. nếu theo bài của anh Quang Hải thì nó thiếu 1 phần. nếu tách từng phần rồi gom lại thì vẫn được nhưng nó hơi dài dòng (cảm ơn anh Quang Hải nhiều).

em giải thích thêm phần em muốn:

từ các dữ liệu của các sheet có tên nơi trồng thí nghiệm:
s2.jpg shet.jpg
tuy nhiên có nơi trồng năm 2011 và có nơi không trồng.

mục đích là tìm kiếm tên giống trồng sau ra được kết quả như sau:
main.jpg
Kết quả này được tổng hợp từ 2 file dữ liệu khác nhau sau:
Tên khi đã công bố
loc ten.jpg
và tên giống chi chưa công bố (được làm 1 hàm để đổi lại tên chưa công bố theo danh sách)
locten2.jpg

tìm kiếm sau ra hết tất cả kết quả.

cảm ơn anh chị nhiều

 
Lần chỉnh sửa cuối:
Upvote 0
Làm cho bạn được 80% rồi nhưng sợ không đúng.
Tạm chỉnh lại cấu trúc file nhưng không biết bạn có đồng ý không nên thôi không viết tiếp
Trận bóng đêm nay mà mình thắng độ thì sẽ viết tiếp còn thua thì ... hix

Nếu đưa code vào 2 sheet kia và chạy từng sheet riêng thì nó bị lỗi.
looix.jpg
Em chỉ biết ít về vba lập hàm tính, còn mấy cái này em không rành lắm. anh chỉ giúp em với.
 
Upvote 0
anh chị nào giúp em viết code ở file đính kèm với. cảm ơn nhiều.

đã có sư phụ QuangHai làm cho bạn, nhưng lỡ làm rồi, thui thì cứ đưa lên xem chơi.
p/s: mấy cái merge dễ bị lỗi lắm, tôi ko chơi với nó

sao file bạn giống có ma quá, mỗi lần code chạyt hì nó copy sheet menu sang file mới
kỳ vậy ta, tôi đầu có viết lệnh này, kiểm tra thì cũng ko thấy có add hay gi khác???

ok, đã sữa lại têm sub...........hichic........
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Remove file đính kèm vì sai với yêu cầu của tác giả
 
Lần chỉnh sửa cuối:
Upvote 0
sao file bạn giống có ma quá, mỗi lần code chạyt hì nó copy sheet menu sang file mới


thôi chịu khó nhấn cái button một cái nha,
tôi cũng khong biết tại sao nữa, cha71c tại nó dụng hàng giữa mấy cái event

Là do bạn dám lấy cái từ mà anh Bill đã nói là không cho xài. Đó là từ copy. Bạn đổi thàng copy2 sẽ hết bị
 
Upvote 0
đã có sư phụ QuangHai làm cho bạn, nhưng lỡ làm rồi, thui thì cứ đưa lên xem chơi.
p/s: mấy cái merge dễ bị lỗi lắm, tôi ko chơi với nó

sao file bạn giống có ma quá, mỗi lần code chạyt hì nó copy sheet menu sang file mới
kỳ vậy ta, tôi đầu có viết lệnh này, kiểm tra thì cũng ko thấy có add hay gi khác???

ok, đã sữa lại têm sub...........hichic........

tìm kiếm nó vẫn thiếu tên cũ. những tên nhập vào thì đúng. nhưng file em gửi ở sheet3 nó có thay đổi tên. đó chính là tên trước kia. anh đã bỏ mất 1 phần. dẫn đến kết quả bị thiếu. có cách nào làm cả 2 không?
 
Upvote 0
tìm kiếm nó vẫn thiếu tên cũ. những tên nhập vào thì đúng. nhưng file em gửi ở sheet3 nó có thay đổi tên. đó chính là tên trước kia. anh đã bỏ mất 1 phần. dẫn đến kết quả bị thiếu. có cách nào làm cả 2 không?

ý bạn là cái danh sách ở cell B2?
bạn yên chí đi, cái tên nào có ở các sheet là nó lượm về đây cho bạn.
bạn thử nhập mới một cái tên mới nào đó vào một sheet nào đó xem
 
Upvote 0
ý bạn là cái danh sách ở cell B2?
bạn yên chí đi, cái tên nào có ở các sheet là nó lượm về đây cho bạn.
bạn thử nhập mới một cái tên mới nào đó vào một sheet nào đó xem

ví dụ: tên giống LVN6 và HD2/2001 là 1 giống. trước khi đưa ra đại trà nó có tên là HD2/2001, đó là giống lai tạo và thử nghiệm, khi được các chỉ tiêu gửi yêu cầu lên Bộ và công nhận với tên khác là LVN6. Nhưng trong thí nghiệm, dữ liệu không có thay đổi được cho biết nó trước khi đổi hay sao.

file của anh gửi thì nó không dò tìm kết quả đó. vì vậy em đã làm 2 sheet để tổng hợp là vậy. làm sao tìm giống LVN6 nhưng đồng thời nó cũng tìm giống HD2/2001.

Ý em khó khăn là ở chỗ đó. nếu dò tìm chỉ 1 mình LVN6 thì em có cách rồi.

cái khó nữa, em viết code thử, khi em đánh tên hoa và thường nó lại khác nhau, dẫn đến lỗi code.

giúp em nhé, cảm ơn anh chị nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
ví dụ: tên giống LVN6 và HD2/2001 là 1 giống. trước khi đưa ra đại trà nó có tên là HD2/2001, đó là giống lai tạo và thử nghiệm, khi được các chỉ tiêu gửi yêu cầu lên Bộ và công nhận với tên khác là LVN6. Nhưng trong thí nghiệm, dữ liệu không có thay đổi được cho biết nó trước khi đổi hay sao.

file của anh gửi thì nó không dò tìm kết quả đó. vì vậy em đã làm 2 sheet để tổng hợp là vậy. làm sao tìm giống LVN6 nhưng đồng thời nó cũng tìm giống HD2/2001.

Ý em khó khăn là ở chỗ đó. nếu dò tìm chỉ 1 mình LVN6 thì em có cách rồi.

cái khó nữa, em viết code thử, khi em đánh tên hoa và thường nó lại khác nhau, dẫn đến lỗi code.

giúp em nhé, cảm ơn anh chị nhiều.

tôi cũng lờ mở hiểu ý bạn thôi,
làm đại khái là chọn tên này ra tên kia, và ngược lại......hen xui....hichic
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
ví dụ: tên giống LVN6 và HD2/2001 là 1 giống. trước khi đưa ra đại trà nó có tên là HD2/2001, đó là giống lai tạo và thử nghiệm, khi được các chỉ tiêu gửi yêu cầu lên Bộ và công nhận với tên khác là LVN6. Nhưng trong thí nghiệm, dữ liệu không có thay đổi được cho biết nó trước khi đổi hay sao.

file của anh gửi thì nó không dò tìm kết quả đó. vì vậy em đã làm 2 sheet để tổng hợp là vậy. làm sao tìm giống LVN6 nhưng đồng thời nó cũng tìm giống HD2/2001.

Ý em khó khăn là ở chỗ đó. nếu dò tìm chỉ 1 mình LVN6 thì em có cách rồi.

cái khó nữa, em viết code thử, khi em đánh tên hoa và thường nó lại khác nhau, dẫn đến lỗi code.

giúp em nhé, cảm ơn anh chị nhiều.
Chắc là vầy chứ gì, toàn là bói trật hoài
 

File đính kèm

Upvote 0
mà code có phân biệt chữ thường chữ hoa hả 2 anh. nếu nhập chữ thường sẽ có lỗi.
 
Upvote 0
Với file em gửi. giờ không muốn lọc ra 1 sheet main. mà lọc ra của 2 sheet2 và sheet3. sau đó lấy dữ liệu sheet2 và sheet3 tổng hợp lại đưa ra sheet1 là kết quả cuối cùng thì phải làm sao. Ô nhập dữ liệu vẫn nằm ở sheet1 (main)
 
Upvote 0
Đúng ý em rồi, cảm ơn anh nha quanghai .
Nếu các bệnh không liệt kê nữa mà là lấy trung bình luôn thì sao anh ? như file em gửi. khi nhập ra dữ liệu thì font ở sheet main là font Times New Roman giúp em với.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Đúng ý em rồi, cảm ơn anh nha quanghai .
Nếu các bệnh không liệt kê nữa mà là lấy trung bình luôn thì sao anh ? như file em gửi. khi nhập ra dữ liệu thì font ở sheet main là font Times New Roman giúp em với.
Chẳng có cái gì hơi quái quái mà mình không mần được, nhưng bạn đổi ý hoài ngán quá hà. Thôi chờ thêm 1 tuần nữa đi, nếu chưa đổi ý thì mình code lại cho.
 
Upvote 0
Xem file đính kèm. Hên xui nha

cái này nó phân biệt chữ hoa và chữ thường hả anh. trường hợp em dùng chữ thường và có khoảng cách em tạo thêm 1 hàm lấy từ ô khác thì công thức nó không tự chạy là sao vậy? em không rành về vba lắm, anh thông cảm nha. nhờ anh hoài ngại quá.
12345.jpg
 
Upvote 0
ok anh. cảm ơn anh nhiều nha. cuối cùng em đã hiểu rồi. Đúng là đi 1 ngày đàng học được 1 số điều hay.
 
Upvote 0
cái này nó phân biệt chữ hoa và chữ thường hả anh. trường hợp em dùng chữ thường và có khoảng cách em tạo thêm 1 hàm lấy từ ô khác thì công thức nó không tự chạy là sao vậy? em không rành về vba lắm, anh thông cảm nha. nhờ anh hoài ngại quá.
View attachment 125561
Chỉ chạy code khi nhập trực tiếp vào đó hoặc dùng validation thì mới chạy
 
Upvote 0
Chỉ chạy code khi nhập trực tiếp vào đó hoặc dùng validation thì mới chạy
không cần anh, chỉ thay đổi nguồn lấy như code anh làm thôi:

Private Sub WorkSheet_Change(ByVal Target As Range)
If Not Intersect(Target, [E1]) Is Nothing Then
Main
End If
End Sub
 
Upvote 0
Nhưng em chưa hiểu đoạn code này. nếu muốn thay đổi số cột thì làm sao. khi em thay đổi lên 20 hay 1 số khác thì chạy nó bị lỗi.

Sub Main()
Dim i, j, x, y, sh, Tim, SoCot
Dim dk1, dk2, TB(), Tem(), Des()
SoCot = 8
ReDim TB(2, SoCot)
dk1 = UCase([B2])
Set Tim = Sheets("TENGIONG").[A:A].Find(dk1, , , 1)
If Not Tim Is Nothing Then dk2 = Tim.Offset(, 1) Else dk2 = dk1
Range("A6", Cells(100, SoCot)).Delete shift:=xlUp
If dk1 = "" Then Exit Sub
For Each sh In Worksheets
If sh.Name <> "TENGIONG" Then
If sh.Name <> "menu" Then
Tem = sh.[A3].CurrentRegion.Value
For i = 2 To UBound(Tem) - 1
If Tem(i, 1) = dk1 Or Tem(i, 1) = dk2 Then
ReDim Des(1 To 2, 1 To SoCot)
Des(1, 1) = sh.Name
For x = 2 To SoCot
Des(1, x) = Tem(i, x)
Des(2, x) = Tem(i + 1, x)
Next
[B65536].End(3).Offset(1, -1).Resize(2, SoCot) = Des
[A65536].End(3).Resize(2).Merge
End If
Next
End If
End If
Next
With [B65536].End(3).Offset(1)
.Offset(, -1).Resize(2).Merge
.Offset(, -1) = "Trung Bình"
.Value = .Offset(-2)
.Offset(1) = .Offset(-1)
For j = 1 To SoCot - 2
x = 0
y = 0
For i = 6 To .Row - 1 Step 2
If Cells(i, j + 2) > 0 Then x = x + 1
TB(1, j) = TB(1, j) + Cells(i, j + 2)
If Cells(i + 1, j + 2) > 0 Then y = y + 1
TB(2, j) = TB(2, j) + Cells(i + 1, j + 2)
Next
If TB(1, j) > 0 Then TB(1, j) = TB(1, j) / x
If TB(2, j) > 0 Then TB(2, j) = TB(2, j) / y
Next
.Offset(, 1).Resize(2, SoCot - 2) = TB
.CurrentRegion.Borders.LineStyle = 1
End With
[A65536].End(3).Resize(2, SoCot).Interior.ColorIndex = 8
End Sub

em thì chịu không hiểu nhiều về code lắm
 
Upvote 0
SoCot= 8 là vì tất cả các sheet liên quan đều có 8 cột, sau này nếu còn làm cho chỗ này đến năm 2016 mà chưa bị đuổi thì thêm 1 cột nữa và sửa lại SoCot =9 và cứ thế....
 
Upvote 0
nó bị lỗi khi thay đổi anh ơi, em chạy rồi mà nó vẫn báo lỗi.
Sub Main()
Dim i, j, x, y, sh, Tim, SoCot
Dim dk1, dk2, TB(), Tem(), Des()
SoCot = 20
ReDim TB(2, SoCot)
dk1 = UCase([B2])
Set Tim = Sheets("TENGIONG").[A:A].Find(dk1, , , 1)
If Not Tim Is Nothing Then dk2 = Tim.Offset(, 1) Else dk2 = dk1
Range("A6", Cells(100, SoCot)).Delete shift:=xlUp
If dk1 = "" Then Exit Sub
For Each sh In Worksheets
If sh.Name <> "TENGIONG" Then
If sh.Name <> "menu" Then
Tem = sh.[A3].CurrentRegion.Value
For i = 2 To UBound(Tem) - 1
If Tem(i, 1) = dk1 Or Tem(i, 1) = dk2 Then
ReDim Des(1 To 2, 1 To SoCot)
Des(1, 1) = sh.Name
For x = 2 To SoCot
Des(1, x) = Tem(i, x)
Des(2, x) = Tem(i + 1, x)
Next
[B65536].End(3).Offset(1, -1).Resize(2, SoCot) = Des
[A65536].End(3).Resize(2).Merge
End If
Next
End If
End If
Next
With [B65536].End(3).Offset(1)
.Offset(, -1).Resize(2).Merge
.Offset(, -1) = "Trung Bình"
.Value = .Offset(-2)
.Offset(1) = .Offset(-1)
For j = 1 To SoCot - 2
x = 0
y = 0
For i = 6 To .Row - 1 Step 2
If Cells(i, j + 2) > 0 Then x = x + 1
TB(1, j) = TB(1, j) + Cells(i, j + 2)
If Cells(i + 1, j + 2) > 0 Then y = y + 1
TB(2, j) = TB(2, j) + Cells(i + 1, j + 2)
Next
If TB(1, j) > 0 Then TB(1, j) = TB(1, j) / x
If TB(2, j) > 0 Then TB(2, j) = TB(2, j) / y
Next
.Offset(, 1).Resize(2, SoCot - 2) = TB
.CurrentRegion.Borders.LineStyle = 1
End With
[A65536].End(3).Resize(2, SoCot).Interior.ColorIndex = 8
End Sub
 
Upvote 0
SoCot= 8 là vì tất cả các sheet liên quan đều có 8 cột, sau này nếu còn làm cho chỗ này đến năm 2016 mà chưa bị đuổi thì thêm 1 cột nữa và sửa lại SoCot =9 và cứ thế....

một số lỗi em chạy thấy như sau khi thêm socot
1. thêm cột thì thêm năm vào sau các sheet dữ liệu
2. giá trị trung bình tính thiếu mất 1 năm
 
Upvote 0
có anh chị nào biết chỉ giáo em với.
 
Upvote 0
với excel 2010 và 2003 đều lỗi như sau:
View attachment 125585

đối với excel 2003 chạy bị lỗi
View attachment 125586

1. File tải về đã chạy đúng yêu cầu tức là code không sai
2. File của bạn có khả năng đã trộn cell hoặc không đúng cấu trúc ban đầu hoặc gì gì đó ai biết được
3. Trên GPE này hiếm có người nào là thần tiên mà đoán được bị lỗi gì qua cái hình bạn up lên.
 
Upvote 0
1. File tải về đã chạy đúng yêu cầu tức là code không sai
2. File của bạn có khả năng đã trộn cell hoặc không đúng cấu trúc ban đầu hoặc gì gì đó ai biết được
3. Trên GPE này hiếm có người nào là thần tiên mà đoán được bị lỗi gì qua cái hình bạn up lên.
anh xem file avi em gửi anh theo link. do file nặng em gửi qua link: http://www.4shared.com/file/tPBmOvOqba/dinh.html?
 
Upvote 0

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

Back
Top Bottom