Giúp tìm công thức hoặc viết code

Liên hệ QC

xuan_nam

Thành viên chính thức
Tham gia
30/7/09
Bài viết
51
Được thích
1
Tôi có File excel (đính kèm). Mục đích tìm những người có đánh dấu (x) ở cột G của sheet Data để điền vào cột E của sheet T1; rất cần nhờ mọi người chỉ giúp dữ liệu nhiều tôi chỉ minh hoạ một cột.
 

File đính kèm

  • tong hop.xls
    81 KB · Đọc: 26
Tôi có File excel (đính kèm). Mục đích tìm những người có đánh dấu (x) ở cột G của sheet Data để điền vào cột E của sheet T1; rất cần nhờ mọi người chỉ giúp dữ liệu nhiều tôi chỉ minh hoạ một cột.
Dữ liệu bạn ghép ô vậy rất khó cài công thức, bạn có thể sử dụng cột phụ để làm.
 
Tôi có File excel (đính kèm). Mục đích tìm những người có đánh dấu (x) ở cột G của sheet Data để điền vào cột E của sheet T1; rất cần nhờ mọi người chỉ giúp dữ liệu nhiều tôi chỉ minh hoạ một cột.
Dữ liệu như Bạn thì tự làm khó mình, từ đó người muốn giúp bạn cũng "oải".
- Bạn nên bố trí lại dữ liệu như sheet Data2, từ đó có thể có nhiều bạn khác sẽ giúp bằng công thức hoặc VBA.
- Bạn nên "minh họa" tất cả yêu cầu của bạn, chứ chỉ minh họa 1 cột rồi sau đó yêu cầu thêm 1 cột, thêm 1 cột ... không ai theo mãi. (Trừ phi người khác giúp 1 cột như "minh họa" thì bạn có thể tự mình làm tiếp các cột khác).
 

File đính kèm

  • tong hop (1).xls
    83.5 KB · Đọc: 13
Tôi có File excel (đính kèm). Mục đích tìm những người có đánh dấu (x) ở cột G của sheet Data để điền vào cột E của sheet T1; rất cần nhờ mọi người chỉ giúp dữ liệu nhiều tôi chỉ minh hoạ một cột.
Mượn ý tưởng của Anh giaiphap, mình dùng cột phụ, bạn tham khảo nhé.
 

File đính kèm

  • Tong hop.xls
    91 KB · Đọc: 9

File đính kèm

  • tong hop.xls
    82.5 KB · Đọc: 3
Mình tham gia một cách không cần cột phụ như sau =IFERROR(OFFSET(Data!B8;SMALL(IF(Data!G9:G77="x";ROW(Data!$B$9:$B$77)-8);ROW(1:1))-2;0);"") công thức mảng
Bạn có làm thế nào để không dùng cột phụ mà tích dấu "x" vào hai ô sáng hoặc chiều thì bên Sheet T1 cũng hiện tên nhỉ, mình cảm ơn.
 
Tôi có File excel (đính kèm). Mục đích tìm những người có đánh dấu (x) ở cột G của sheet Data để điền vào cột E của sheet T1; rất cần nhờ mọi người chỉ giúp dữ liệu nhiều tôi chỉ minh hoạ một cột.
Góp ý cho bạn:
1/ Trong Excel khi nhập liệu người ta kỵ nhất là Merge and Center (gộp ô).
2/ Nếu sheet Data của bạn có cột ngày thì việc tách những người có đánh dấu (x) sang sheet khác cũng dễ dàng mà không cần gõ nhập tên người dạy cột E sheet T1.
3/ Nên có 1 sheet theo dõi chung cả năm để còn dựa vào đó bình xét cuối học kỳ.
 
Bạn có làm thế nào để không dùng cột phụ mà tích dấu "x" vào hai ô sáng hoặc chiều thì bên Sheet T1 cũng hiện tên nhỉ, mình cảm ơn.
cho thêm cái điều kiện vào cái phần -2 ý, kiểu như này cho tổng quát =IFERROR(OFFSET(Data!$B$8;SMALL(IF(Data!$G$9:$G$77="x";ROW(Data!$B$9:$B$77)-8);ROW(1:1))-ROUND(MOD(SMALL(IF(Data!$G$9:$G$77="x";ROW(Data!$B$9:$B$77)-8);ROW(1:1));3,000001);0)+1;0);"")
nhưng nếu tích cả 3 ô sáng chiều tối nó sẽ hiện 3 lần. Gộp ô chỉ làm khi in báo cáo cho đẹp chứ trong sửa lý dữ liệu như bài của bạn này oải ghê
 

File đính kèm

  • tong hop.xls
    98 KB · Đọc: 5
cho thêm cái điều kiện vào cái phần -2 ý, kiểu như này cho tổng quát =IFERROR(OFFSET(Data!$B$8;SMALL(IF(Data!$G$9:$G$77="x";ROW(Data!$B$9:$B$77)-8);ROW(1:1))-ROUND(MOD(SMALL(IF(Data!$G$9:$G$77="x";ROW(Data!$B$9:$B$77)-8);ROW(1:1));3,000001);0)+1;0);"")
nhưng nếu tích cả 3 ô sáng chiều tối nó sẽ hiện 3 lần. Gộp ô chỉ làm khi in báo cáo cho đẹp chứ trong sửa lý dữ liệu như bài của bạn này oải ghê
Cảm ơn bạn nhé.
 
C:
Sub tim_dukieu()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim ArrT1()
Dim eR As Long, i As Long, m As Long, Name, DonVI, Mon, Thu
   With ThisWorkbook.Sheets("Data")
   eR = .Range("G" & Rows.Count).End(xlUp).Row - 2
   ReDim ArrT1(1 To eR, 1 To 4)
      For i = 9 To eR
         If .Range("G" & i) <> "" Then
            m = m + 1
            If m > 0 Then
                  If .Range("G" & i).Offset(0, -1).Value Like "S*" Then Mon = .Range("G" & i).Offset(0, -4).Value: _
                     Thu = .Range("G" & i).Offset(0, -1).Value: Name = .Range("G" & i).Offset(0, -5).Value: DonVI = .Range("G" & i).Offset(0, -3).Value
                  
                  If .Range("G" & i).Offset(0, -1).Value Like "C*" Then Mon = .Range("G" & i - 1).Offset(0, -4).Value: _
                     Thu = .Range("G" & i).Offset(0, -1).Value: Name = .Range("G" & i - 1).Offset(0, -5).Value: DonVI = .Range("G" & i - 1).Offset(0, -3).Value
                  
                  If .Range("G" & i).Offset(0, -1).Value Like "T*" Then Mon = .Range("G" & i - 2).Offset(0, -4).Value: _
                     Thu = .Range("G" & i).Offset(0, -1).Value: Name = .Range("G" & i - 2).Offset(0, -5).Value: DonVI = .Range("G" & i - 2).Offset(0, -3).Value
               ArrT1(m, 1) = Mon: ArrT1(m, 2) = Thu
               ArrT1(m, 3) = Name: ArrT1(m, 4) = DonVI
            End If
         End If
      Next
   End With
On Error GoTo Thoat
      ThisWorkbook.Sheets("T1").Range("C6:F10000") = ""
      ThisWorkbook.Sheets("T1").Range("C6").Resize(m, 4) = ArrT1
      
   msg = MsgBox("Finish Data", vbSystemModal, "Thông báo")
   If msg Then
      Application.Calculation = xlCalculationAutomatic
      Application.ScreenUpdating = True
      Else
Thoat: MsgBox "Hoc Sinh Quá gioi nên không cân hoc thêm ", vbSystemModal, "Thông báo"
      Application.Calculation = xlCalculationAutomatic
      Application.ScreenUpdating = True
   End If
End Sub
 

File đính kèm

  • Tong hop (2).xlsm
    29.6 KB · Đọc: 10
Lần chỉnh sửa cuối:
Tham khảo 1 cách khác.
 

File đính kèm

  • tong hop.xls
    106 KB · Đọc: 10
Thiệt là quá tốt.
Người hỏi từ thứ Hai (10:01) đến giờ không quay lại mà có rất nhiều người tham gia giải giúp, mỗi người mỗi kiểu.

HIện em đang có 1 chút vấn đề mong anh giúp đỡ em. Như bài #1 e đã hỗ trợ người ra đề viết 1 đoạn code VBA để lọc ra những người có ô khác " trống" . nhưng trong đoạn code phần Resize mảng nếu mảng bằng trống lúc Resize mảng sẽ báo lỗi. Anh có câu lệnh nào khắc phục được không ạ.
Em gửi File bị lỗi để ví dụ. Mong anh giúp đỡ. Em cảm ơn.
 

File đính kèm

  • Tong hop (2).xlsm
    29.6 KB · Đọc: 6
HIện em đang có 1 chút vấn đề mong anh giúp đỡ em. Như bài #1 e đã hỗ trợ người ra đề viết 1 đoạn code VBA để lọc ra những người có ô khác " trống" . nhưng trong đoạn code phần Resize mảng nếu mảng bằng trống lúc Resize mảng sẽ báo lỗi. Anh có câu lệnh nào khắc phục được không ạ.
Em gửi File bị lỗi để ví dụ. Mong anh giúp đỡ. Em cảm ơn.
Tôi đã có gợi ý tác giả bố trí lại dữ liệu như bài #3 nhưng không có ý kiến gì nên tôi không tham gia trả lời.
Trường hợp của bạn, khi biến m=0 thì dòng lệnh ThisWorkbook.Sheets("T1").Range("C6").Resize(m, 4) = ArrT1 sẽ lỗi.
Có thể bẫy lỗi bằng cách:
If m>0 then ThisWorkbook.Sheets("T1").Range("C6").Resize(m, 4) = ArrT1
 
Tôi đã có gợi ý tác giả bố trí lại dữ liệu như bài #3 nhưng không có ý kiến gì nên tôi không tham gia trả lời.
Trường hợp của bạn, khi biến m=0 thì dòng lệnh ThisWorkbook.Sheets("T1").Range("C6").Resize(m, 4) = ArrT1 sẽ lỗi.
Có thể bẫy lỗi bằng cách:
If m>0 then ThisWorkbook.Sheets("T1").Range("C6").Resize(m, 4) = ArrT1

Em đã thử và code không báo lỗi nữa rồi. tại vì em không muốn dùng On Error Goto để tránh những lỗi mình bị bỏ sót. Em cảm ơn anh rất nhiều.
 
Web KT
Back
Top Bottom