Tách dòng có điều kiện

Liên hệ QC

Phuong0907357642

Thành viên mới
Tham gia
5/8/11
Bài viết
39
Được thích
0
Dear các anh chị

Hiện tại bên em phòng sales đang làm lịch công tác bán hàng cho các đội bán hàng trên cả nước. Với 237 đội và đội là 300 khách hàng với các tuần suất viếng thăm khác nhau của từng khách hàng và từng tuần.
Em chỉ có 3 trường hợp nhưng để import vào hệ thống đang làm thì làm sai và thiếu rất nhiều. Nên nhờ các anh hỗ trợ giúp VBA nào để chuyển dòng có điều kiện ah.
Ví dụ 1 khách hàng hằng tuần em đều đi bán, các anh nhân viên bán hàng sẽ Yes qua các tuần nhưng khi import vào hệ thống thì mỗi tuần là độc lập và phải tách thành 4 dòng độc lập giống nhau từ đầu đến cuối khác nhau ở yes, và NO của tuần đó.
Bên em goi là F4 còn F2 thì yes tuần lẻ No tuần chẵn hoặc F2 yes tuần chẵn NO tuần lẻ.
Vì 1 đội em có tới 300 khách hàng ở 25 tuyến bán hàng nên làm sai khá nhiều.
Em rất mong nhờ sự hỗ trợ của các anh chị
Em xin gởi file cắt ra từ yêu cầu ah

Em xin chân thành cám ơn rất nhiều
 

File đính kèm

  • Tach_cac_dong_co_dieu_kien.xlsx
    12.6 KB · Đọc: 26
Dear các anh chị

Hiện tại bên em phòng sales đang làm lịch công tác bán hàng cho các đội bán hàng trên cả nước. Với 237 đội và đội là 300 khách hàng với các tuần suất viếng thăm khác nhau của từng khách hàng và từng tuần.
Em chỉ có 3 trường hợp nhưng để import vào hệ thống đang làm thì làm sai và thiếu rất nhiều. Nên nhờ các anh hỗ trợ giúp VBA nào để chuyển dòng có điều kiện ah.
Ví dụ 1 khách hàng hằng tuần em đều đi bán, các anh nhân viên bán hàng sẽ Yes qua các tuần nhưng khi import vào hệ thống thì mỗi tuần là độc lập và phải tách thành 4 dòng độc lập giống nhau từ đầu đến cuối khác nhau ở yes, và NO của tuần đó.
Bên em goi là F4 còn F2 thì yes tuần lẻ No tuần chẵn hoặc F2 yes tuần chẵn NO tuần lẻ.
Vì 1 đội em có tới 300 khách hàng ở 25 tuyến bán hàng nên làm sai khá nhiều.
Em rất mong nhờ sự hỗ trợ của các anh chị
Em xin gởi file cắt ra từ yêu cầu ah

Em xin chân thành cám ơn rất nhiều
Yêu cầu khá dễ nhưng trình bày rối rắm quá. Nếu bạn vẫn còn cần thì xác nhận để tôi làm cho.
 
Yêu cầu khá dễ nhưng trình bày rối rắm quá. Nếu bạn vẫn còn cần thì xác nhận để tôi làm cho.
MÌnh vẫn còn đang cần ah,
Tức là:
1 có khách hàng đi viếng thăm tuần 1, tuần 2, tuần 3, tuần 4. được liệt kê theo hàng ngang
Mình mong muốn chuyển thành hàng dọc như hình bên dưới.
Có nghĩa là: có bao nhiêu cái yes của từng tuần thì tương ứng bấy nhiêu dòng yes tương ứng với từng tuần như hình bên dưới

1607073959350.png
 

File đính kèm

  • 1607073916454.png
    1607073916454.png
    135.6 KB · Đọc: 1
  • Tach_cac_dong_co_dieu_kien.xlsx
    12.6 KB · Đọc: 7
MÌnh vẫn còn đang cần ah,
Tức là:
1 có khách hàng đi viếng thăm tuần 1, tuần 2, tuần 3, tuần 4. được liệt kê theo hàng ngang
Mình mong muốn chuyển thành hàng dọc như hình bên dưới.
Có nghĩa là: có bao nhiêu cái yes của từng tuần thì tương ứng bấy nhiêu dòng yes tương ứng với từng tuần như hình bên dưới

View attachment 250581
Đọc file thì tôi hiểu rồi nên mới nói là yêu cầu không khó. Giờ tôi bận rồi, bạn chờ nhé!
 
MÌnh vẫn còn đang cần ah,
Tức là:
1 có khách hàng đi viếng thăm tuần 1, tuần 2, tuần 3, tuần 4. được liệt kê theo hàng ngang
Mình mong muốn chuyển thành hàng dọc như hình bên dưới.
Có nghĩa là: có bao nhiêu cái yes của từng tuần thì tương ứng bấy nhiêu dòng yes tương ứng với từng tuần như hình bên dưới

View attachment 250581
Làm vội bạn kiểm tra lại:
Mã:
Option Explicit
'https://giaiphapexcel.com/diendan/threads/t%C3%A1ch-d%C3%B2ng-c%C3%B3-%C4%91i%E1%BB%81u-ki%E1%BB%87n.153116/#post-1005642
Sub Transpose()
Dim sArr(), dArr(), I As Long, J As Long, K As Long
Dim R As Long, R1 As Long, N As Long
With Sheets("Data")
    sArr = .Range("A3:P" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
    R = UBound(sArr, 1)
    R1 = UBound(sArr, 2)
End With
ReDim dArr(1 To R * 5, 1 To R1)
For I = 1 To R
    For J = 13 To 16
        If UCase(sArr(I, J)) = "YES" Then
            K = K + 1
            For N = 1 To R1
                If N < 13 Then
                    dArr(K, N) = sArr(I, N)
                Else
                    dArr(K, N) = "No"
                End If
            Next
            dArr(K, J) = "Yes"
        End If
    Next
    K = K + 1
Next
Sheets("Result").Range("A3:Z100000").ClearContents
Sheets("Result").Range("A3").Resize(K, R1) = dArr
End Sub
 

File đính kèm

  • Tach_cac_dong_co_dieu_kien.xlsm
    24.6 KB · Đọc: 19
Thấy có người làm cho bạn cũng lâu rồi nên tôi không làm nữa. Kết quả cuối cùng cũng vậy thôi?
 
Thấy có người làm cho bạn cũng lâu rồi nên tôi không làm nữa. Kết quả cuối cùng cũng vậy thôi?
Làm vội bạn kiểm tra lại:
Mã:
Option Explicit
'https://giaiphapexcel.com/diendan/threads/t%C3%A1ch-d%C3%B2ng-c%C3%B3-%C4%91i%E1%BB%81u-ki%E1%BB%87n.153116/#post-1005642
Sub Transpose()
Dim sArr(), dArr(), I As Long, J As Long, K As Long
Dim R As Long, R1 As Long, N As Long
With Sheets("Data")
    sArr = .Range("A3:P" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
    R = UBound(sArr, 1)
    R1 = UBound(sArr, 2)
End With
ReDim dArr(1 To R * 5, 1 To R1)
For I = 1 To R
    For J = 13 To 16
        If UCase(sArr(I, J)) = "YES" Then
            K = K + 1
            For N = 1 To R1
                If N < 13 Then
                    dArr(K, N) = sArr(I, N)
                Else
                    dArr(K, N) = "No"
                End If
            Next
            dArr(K, J) = "Yes"
        End If
    Next
    K = K + 1
Next
Sheets("Result").Range("A3:Z100000").ClearContents
Sheets("Result").Range("A3").Resize(K, R1) = dArr
End Sub
Cám ơn bạn, mình đã làm được,
 
Web KT
Back
Top Bottom