[Nhờ giúp] Trích xuất dữ liệu có điều kiện

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

Blad01

Thành viên thường trực
Tham gia
6/10/07
Bài viết
350
Được thích
28
Em có một file dữ liệu có rất nhiều sheet, mỗi sheet lại có rất nhiều bệnh nhân ở các xã khác nhau. Bây giờ thủ trưởng em yêu cầu phải sắp xếp bệnh nhân xã nào về khu vực của xã đó để tiện cho việc báo cáo và theo dõi. Em toát hết cả mồ hôi mấy hôm nay mà vẫn chưa làm xong, nản quá. Em gửi file lên diễn đàn mong các anh chị có giải pháp nào giúp em sắp xếp lại dữ liệu bằng công thức hoặc trích xuất các bệnh nhân cùng xã ra sheet khác theo yêu cầu của xếp em với ạ. (File dữ liệu của em có kích thước lớn vì vậy em đưa 1 sheet lên diễn đàn để làm ví dụ, các sheet khác đều có cấu trúc nhw nhau ạ).
Cảm ơn anh, chị nhiều ạ !
 

File đính kèm

Bản Po - Hua Trai cái nào là tên xã vậy ?
 
Em có một file dữ liệu có rất nhiều sheet, mỗi sheet lại có rất nhiều bệnh nhân ở các xã khác nhau. Bây giờ thủ trưởng em yêu cầu phải sắp xếp bệnh nhân xã nào về khu vực của xã đó để tiện cho việc báo cáo và theo dõi. Em toát hết cả mồ hôi mấy hôm nay mà vẫn chưa làm xong, nản quá. Em gửi file lên diễn đàn mong các anh chị có giải pháp nào giúp em sắp xếp lại dữ liệu bằng công thức hoặc trích xuất các bệnh nhân cùng xã ra sheet khác theo yêu cầu của xếp em với ạ. (File dữ liệu của em có kích thước lớn vì vậy em đưa 1 sheet lên diễn đàn để làm ví dụ, các sheet khác đều có cấu trúc nhw nhau ạ).
Cảm ơn anh, chị nhiều ạ !
sort theo xã có giử lại khoa không?
nếu ko thì bạn thử như sau
Mã:
P13=TRIM(RIGHT(E13,FIND("-",E13)))
kéo xuống, sau đó sort theo cột này
==============
nếu làm bằng vba thì cũng phê lắm nha
bạn cho ít nhất 2 sheet để thử

==============
Bản Po - Hua Trai cái nào là tên xã vậy ?

tôi đoán cụm đứng sau vì thấy có "TT......" thị trấn gì đó.....chắc là vậy
 
dữ liệu nghe quảng cáo là kích thước lớnnhiều sheet nên chưa chắc thêm cột đã khả thi , dữ liệu khác sheet đem gom chung lại với nhau thì dùng công thức filter kiểu gì ta ? lót dép ngồi xem anh tài ....
 
sort theo xã có giử lại khoa không?
nếu ko thì bạn thử như sau
Mã:
P13=TRIM(RIGHT(E13,FIND("-",E13)))
kéo xuống, sau đó sort theo cột này
==============
nếu làm bằng vba thì cũng phê lắm nha
bạn cho ít nhất 2 sheet để thử

==============


tôi đoán cụm đứng sau vì thấy có "TT......" thị trấn gì đó.....chắc là vậy.

Cấu trúc là: Bản - Xã (ví dụ: Bản Po - xã Hua Trai). Em đưa thêm file có 2 sheet mong anh chị diễn đàn giúp đỡ ạ. Sort có dữ lại khoa ạ.
Công thức này
Mã:
P13=TRIM(RIGHT(E13,FIND("-",E13)))
chưa đúng ý em rùi, em muốn các bệnh nhận trong một xã sẽ xếp lại gần nhau theo nhóm. ví dụ: xã Hua Trai có bệnh nhân a, b, c... rồi tiếp đến là bệnh nhân xã Chiềng lao: d, e, f... và cứ như vậy. Các bác có thể sort ra sheet mới cũng được ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
dữ liệu nghe quảng cáo là kích thước lớnnhiều sheet nên chưa chắc thêm cột đã khả thi , dữ liệu khác sheet đem gom chung lại với nhau thì dùng công thức filter kiểu gì ta ? lót dép ngồi xem anh tài ....

Không cần gom chung sheet đâu ạ, sheet nào sắp xếp sheet đó là được ạ. Vì dữ liệu em nhập theo tháng mà.
 
vậy rốt cục bệnh án của tháng 1 với tháng 4 có gom chung lại với nhau không vậy ?
không xem câu trả lời ở trên . lỡ tay bấm nút gởi bài .....
 
dạ không ạ. Sheet nào sort shet đó thôi ạ

vậy còn ko chịu tách cái xã ra, rồi vào từng khoa sort lại (chỉ chọn trong một khoa),
đưa cho tôi đây 12 sheet tôi làm vài phút là xong....haiz.............tưởng là làm cái gì?
=========
sau khi làm xong thì tôi mới đọc các bài sau của bạn, nên lở làm rồi
sheet T1 là tôi sort bằng tay đó, bạn xem phải vậy ko?
==========
trong file có đoạn code tổng hợp về một sheet
(có sử dụng hàm Join2DArray của anh NDU)
 

File đính kèm

vậy còn ko chịu tách cái xã ra, rồi vào từng khoa sort lại (chỉ chọn trong một khoa),
đưa cho tôi đây 12 sheet tôi làm vài phút là xong....haiz.............tưởng là làm cái gì?
=========
sau khi làm xong thì tôi mới đọc các bài sau của bạn, nên lở làm rồi
sheet T1 là tôi sort bằng tay đó, bạn xem phải vậy ko?
==========
trong file có đoạn code tổng hợp về một sheet
(có sử dụng hàm Join2DArray của anh NDU)

Cảm ơn bác nhiều lắm ạ. Nhưng gộp chung vào một sheet như vậy thì em không báo cáo theo tháng và theo khoa được ạ. có cách nào sort mà không cần gộp chung 1 sheet và vẫn giữ được khoa không ạ.
 
Cảm ơn bác nhiều lắm ạ. Nhưng gộp chung vào một sheet như vậy thì em không báo cáo theo tháng và theo khoa được ạ. có cách nào sort mà không cần gộp chung 1 sheet và vẫn giữ được khoa không ạ.

tôi viết ở đây nè..................................................
vậy còn ko chịu tách cái xã ra, rồi vào từng khoa sort lại (chỉ chọn trong một khoa),
......................................
sheet T1 là tôi sort bằng tay đó, bạn xem phải vậy ko?

================
chỉnh lại cthuc cho nó đẹp chút
Mã:
P13=IF(E13<>"",TRIM(RIGHT(E13,LEN(E13)-FIND("-",E13)-1)),"")
 
Lần chỉnh sửa cuối:
Mã:
=SUM(COUNTA('T4 - 2015'!E13:E367),COUNTA('thang 01 - 2015'!E13:E353))-COUNTA(Sheet1!E2:E657)
 
Cảm ơn bác nhiều lắm ạ. Nhưng gộp chung vào một sheet như vậy thì em không báo cáo theo tháng và theo khoa được ạ. có cách nào sort mà không cần gộp chung 1 sheet và vẫn giữ được khoa không ạ.

- File dữ liệu của Bạn Merge Cells tùm lum không theo quy luật nào cả, muốn Merge từ đâu thì Merge, muốn không thì thôi.
- Trong code tôi dựa vào cột A, gặp từ "Khoa" là bắt đầu, găp từ "Cộng" là kết thúc 1 vùng để Sort.
Bắt buộc trong cột A: trên phải có "Khoa", dưới phải có "Cộng", Muốn Merge thì cũng bắt đầu từ cột A.
Dòng cuối cùng cũng phải có "Tổng cộng" hay cái gì đó trong cột A.
(Không đúng "quy luật" như vậy thì nó Sort bậy "gáng chịu" nghe.)
PHP:
Public Sub GPE()
Application.ScreenUpdating = False
Dim Ws As Worksheet, Rng As Range, I As Long, ERow As Long, FRow As Long, R As Long, Tem
On Error Resume Next
For Each Ws In Worksheets
    With Ws
    R = .Range("A65536").End(xlUp).Row - 1
    For I = 12 To R
        If UCase(.Range("A" & I)) Like "KHOA*" Then
            FRow = I + 1
        ElseIf UCase(.Range("A" & I)) Like "C?NG*" Then
            ERow = I - 1
            .Range("B" & FRow & ":P" & ERow).Sort Key1:=.Range("P" & FRow), Order1:=xlAscending, _
                Key2:=.Range("E" & FRow), Order2:=xlAscending
        Else
            Tem = Split(.Range("E" & I), "-")
            .Range("P" & I).Value = Trim(Tem(1))
        End If
    Next I
    .Range("P12:P1000").ClearContents
End With
Next Ws
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
- File dữ liệu của Bạn Merge Cells tùm lum không theo quy luật nào cả, muốn Merge từ đâu thì Merge, muốn không thì thôi.
- Trong code tôi dựa vào cột A, gặp từ "Khoa" là bắt đầu, găp từ "Cộng" là kết thúc 1 vùng để Sort.
Bắt buộc trong cột A: trên phải có "Khoa", dưới phải có "Cộng", Muốn Merge thì cũng bắt đầu từ cột A.
Dòng cuối cùng cũng phải có "Tổng cộng" hay cái gì đó trong cột A.
(Không đúng "quy luật" như vậy thì nó Sort bậy "gáng chịu" nghe.)
PHP:
Public Sub GPE()
Application.ScreenUpdating = False
Dim Ws As Worksheet, Rng As Range, I As Long, ERow As Long, FRow As Long, R As Long, Tem
On Error Resume Next
For Each Ws In Worksheets
    With Ws
    R = .Range("A65536").End(xlUp).Row - 1
    For I = 12 To R
        If UCase(.Range("A" & I)) Like "KHOA*" Then
            FRow = I + 1
        ElseIf UCase(.Range("A" & I)) Like "C?NG*" Then
            ERow = I - 1
            .Range("B" & FRow & ":P" & ERow).Sort Key1:=.Range("P" & FRow), Order1:=xlAscending, _
                Key2:=.Range("E" & FRow), Order2:=xlAscending
        Else
            Tem = Split(.Range("E" & I), "-")
            .Range("P" & I).Value = Trim(Tem(1))
        End If
    Next I
    .Range("P12:P1000").ClearContents
End With
Next Ws
End Sub

nhìn cái file trộn cell phát ngán, vậy mà sư phụ cũng viết được..........potay..............kakakak
==========
nếu lặp qua mỗi cell gán một giá trị tách===>chắc tốc độ cũng chậm phần nào
sao sư phụ không cho nó vào một cái mảng tạm, khi nào gặp "cộng" thì mới đập nó xuống sheet
chắc là nhanh hơn tí........hihihihihi
 
Phải nói phục các anh chị diễn đàn. Em còn một đống file của năm 2014 nữa. Mà em chẳng viết gì về ngôn ngữ lập trình. Có gì khó khăn mai nhờ anh chị giúp em nha. Đêm nay ngủ ngon rùi. Cảm ơn anh chị, nhiều nha.
 
Các anh, chị ơi cho em hỏi: code trên chỉ chạy được cho 02 sheet thôi phải không ạ. Em còn nhiều sheet lắm vậy muốn sắp xếp tất cả các sheet trong file thì phải làm sao ạ.
 
Các anh, chị ơi cho em hỏi: code trên chỉ chạy được cho 02 sheet thôi phải không ạ. Em còn nhiều sheet lắm vậy muốn sắp xếp tất cả các sheet trong file thì phải làm sao ạ.

Cứ thử với nhiều sheet hơn xem sao, miễn là chỉnh dữ liệu các sheet đúng "quy luật" như trên.

nhìn cái file trộn cell phát ngán, vậy mà sư phụ cũng viết được..........potay..............kakakak
==========
nếu lặp qua mỗi cell gán một giá trị tách===>chắc tốc độ cũng chậm phần nào
sao sư phụ không cho nó vào một cái mảng tạm, khi nào gặp "cộng" thì mới đập nó xuống sheet
chắc là nhanh hơn tí........hihihihihi

Cứ làm thô vậy thôi, để người khác "ngứa mắt" làm khác nữa chứ.
 
Lần chỉnh sửa cuối:
Cứ thử với nhiều sheet hơn xem sao, miễn là chỉnh dữ liệu các sheet đúng "quy luật" như trên.



Cứ làm thô vậy thôi, để người khác "ngứa mắt" làm khác nữa chứ.
Em làm với 10 sheet nhưng có sheet chạy, có sheet không anh ạ, anh xem lại giúp em với được không ?
 
Nguyên nhân không chạy là do vẫn còn Merge ở các ô bên phải bảng tính anh ba tê ạ. Em cảm ơn anh nhiều lắm.
 
ủa vậy giờ muốn trích ra các bệnh án tháng 4 của xã Chiềng Lao ( giữ lại tên khoa ) thì làm sao ta ? hihi +-+-+-+
 
Web KT

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

Back
Top Bottom