Đếm số lượng trong một Cell có dấu ngăn cách bởi dấu phẩy, chấm phẩy và gạch ngang

Liên hệ QC

dongducnhiem

Thành viên tiêu biểu
Tham gia
21/3/07
Bài viết
635
Được thích
377
Chào các bạn!
Nhờ các bạn thiết lập công thức tổng quát đếm số lượng trong một Cell có dấu ngăn cách bởi dấu phẩy, chấm phẩy và gạch ngang
Xin xem File đính kèm
 

File đính kèm

  • DemSoLuong.xls
    13.5 KB · Đọc: 139
Chào các bạn!
Nhờ các bạn thiết lập công thức tổng quát đếm số lượng trong một Cell có dấu ngăn cách bởi dấu phẩy, chấm phẩy và gạch ngang
Xin xem File đính kèm
Với dữ liệu như trong file của bạn thì se dùng công thức này tại cell B2:
PHP:
=IF(A2="","",IF(COUNTIF(A2,"*-*"),ROWS(INDIRECT(SUBSTITUTE(A2,"-",":"))),LEN(A2)-LEN(SUBSTITUTE(SUBSTITUTE(A2,",",""),";",""))+1))
Nếu có trường hợp đặc biệt nào khác, ta tính tiếp
 
Công thức của tôi hơi dài:
PHP:
=IF(A2="";"";IF(ISNA(ERROR.TYPE(FIND("-";A2)));VALUE(RIGHT(A2;LEN(A2)-FIND("-";A2)))-VALUE(LEFT(A2;FIND("-";A2)-1))+1;LEN(A2)*2-LEN(SUBSTITUTE(A2;",";""))-LEN(SUBSTITUTE(A2;";";""))+1))

Nếu có trường hợp đặc biệt nào khác, ta tính tiếp
Còn một trường hợp đặc biệt mà tôi chưa tính được, trong một cell có bao gồm dấu phẩy, chấm phẩy và gạch ngang, ví dụ:
01, 02; 03, 05-07; 09, 10
hoặc 01-03; 101-105
hoặc ... (Hai ví dụ trên cho kết quả là 8)
Nhờ anh viết giùm công thức! Cảm ơn.
 
Phiền các ace gợi ý giúp, xin cảm ơn nhiều:
  • Biểu 1: Cách đếm số tổ tại các cột (4), (5) và (6) để điền vào cột tổng số (3). Nhất là kiểm tra số thôn, tổ ở cột (6) do họ đã liệt kê danh sách các thôn, tổ bằng dấu chấm phảy ";" hoặc dấu phảy ","
  • Biểu 2: Căn cứ vào phân loại ở cột (5) ==> Tự đưa danh sách các thôn, tổ vào các Cột (4) hoặc (5) hoặc (6) tương ứng tại Biểu 1. Nếu có thể thì các thôn, tổ ngăn cách bằng dấu chấm phảy ";" hoặc dấu phảy ","
 

File đính kèm

  • Gà 1.jpg
    Gà 1.jpg
    140 KB · Đọc: 7
  • Gà 2.jpg
    Gà 2.jpg
    221.8 KB · Đọc: 6
  • PHÂN LOẠI THÔN TỔ DÂN PHỐ NĂM 2019_Nhờ GaExcel.xlsx
    22.7 KB · Đọc: 3
Phiền các ace gợi ý giúp, xin cảm ơn nhiều:
  • Biểu 1: Cách đếm số tổ tại các cột (4), (5) và (6) để điền vào cột tổng số (3). Nhất là kiểm tra số thôn, tổ ở cột (6) do họ đã liệt kê danh sách các thôn, tổ bằng dấu chấm phảy ";" hoặc dấu phảy ","
  • Biểu 2: Căn cứ vào phân loại ở cột (5) ==> Tự đưa danh sách các thôn, tổ vào các Cột (4) hoặc (5) hoặc (6) tương ứng tại Biểu 1. Nếu có thể thì các thôn, tổ ngăn cách bằng dấu chấm phảy ";" hoặc dấu phảy ","
Bạn có biết VBA không? Thử dùng xem sao.
Hãy nhấn nút DEM SO TO và Nút CHUYEN DANH SACH và xem điều gì xảy ra.
Code củ chuối anh chị em ghé qua, xin góp ý.
 

File đính kèm

  • PHÂN LOẠI THÔN TỔ DÂN PHỐ NĂM 2019_Nhờ GaExcel.xlsm
    38.3 KB · Đọc: 10
Bạn có biết VBA không? Thử dùng xem sao.
Hãy nhấn nút DEM SO TO và Nút CHUYEN DANH SACH và xem điều gì xảy ra.
Code củ chuối anh chị em ghé qua, xin góp ý.
Em mới xem qua DEM SO TO thì em thấy mấy dòng này có vẻ không cần thiết:
Mã:
S1 = Application.Substitute(Application.Trim(Arr(i, 1)), ".", " ")
S2 = Application.Substitute(Application.Trim(Arr(i, 2)), ".", " ")
S3 = Application.Substitute(Application.Trim(Arr(i, 3)), ".", " ")
Và chưa giải quyết được vấn đề này:
họ đã liệt kê danh sách các thôn, tổ bằng dấu chấm phảy ";" hoặc dấu phảy ","
 
Em mới xem qua DEM SO TO thì em thấy mấy dòng này có vẻ không cần thiết:
Mã:
S1 = Application.Substitute(Application.Trim(Arr(i, 1)), ".", " ")
S2 = Application.Substitute(Application.Trim(Arr(i, 2)), ".", " ")
S3 = Application.Substitute(Application.Trim(Arr(i, 3)), ".", " ")
Và chưa giải quyết được vấn đề này:
Cảm ơn bạn đã xem bài. Theo bài thì Đúng là dòng đó không cần thiết, nhưng lúc làm mình thêm vào để dẽ xử lý sau này ( các vấn đề ("-",";' ... ) sẽ dễ hơn.
Nhưng nhìn chung theo file đính kèm thì có vẻ ổn.
 
Cảm ơn bạn đã xem bài. Theo bài thì Đúng là dòng đó không cần thiết, nhưng lúc làm mình thêm vào để dẽ xử lý sau này ( các vấn đề ("-",";' ... ) sẽ dễ hơn.
Nhưng nhìn chung theo file đính kèm thì có vẻ ổn.
Em thì làm thế này:
Mã:
Sub Dem1()
Dim str As String, Arr(), I As Long
With Sheet1
    Arr = .Range("D8:F" & .Cells(Rows.Count, 6).End(3).Row).Value
    For I = 1 To UBound(Arr)
        str = Arr(I, 1) & "," & Arr(I, 2) & "," & Arr(I, 3)
        str = Application.Trim(Replace(Replace(Replace(str, " ", ""), ",", " "), ";", " "))
        Arr(I, 1) = UBound(Split(str)) + 1
    Next
    .Range("C8").Resize(UBound(Arr), 1) = Arr
End With
End Sub
 
Em thì làm thế này:
Mã:
Sub Dem1()
Dim str As String, Arr(), I As Long
With Sheet1
    Arr = .Range("D8:F" & .Cells(Rows.Count, 6).End(3).Row).Value
    For I = 1 To UBound(Arr)
        str = Arr(I, 1) & "," & Arr(I, 2) & "," & Arr(I, 3)
        str = Application.Trim(Replace(Replace(Replace(str, " ", ""), ",", " "), ";", " "))
        Arr(I, 1) = UBound(Split(str)) + 1
    Next
    .Range("C8").Resize(UBound(Arr), 1) = Arr
End With
End Sub
Cảm ơn bạn đã cho tôi thêm 1 kinh nghiệm quý. Nối các chuỗi lại rồi xử lý (thay thế) một lần trước khi đếm số phần tử trong Array.
 
)Em thì làm thế này:
Mã:
Sub Dem1()
Dim str As String, Arr(), I As Long
With Sheet1
    Arr = .Range("D8:F" & .Cells(Rows.Count, 6).End(3).Row).Value
    For I = 1 To UBound(Arr)
        str = Arr(I, 1) & "," & Arr(I, 2) & "," & Arr(I, 3)
        str = Application.Trim(Replace(Replace(Replace(str, " ", ""), ",", " "), ";", " "))
        Arr(I, 1) = UBound(Split(str)) + 1
    Next
    .Range("C8").Resize(UBound(Arr), 1) = Arr
End With
End Sub
Bạn lập một hàm riêng, với tham số thứ nhất là chuỗi, tham thứ hai là dấu chọn lựa (ở đây là dấu cách), tham thứ ba là chuỗi (hoặc paramarray) các dấu cần tách.
Hàm thay thế các dấu bằng dấu chọn lựa.

Sau đó gọi
str = ThayKyTu(str, " ", "-.,;")
 
Cảm ơn bạn đã cho tôi thêm 1 kinh nghiệm quý. Nối các chuỗi lại rồi xử lý (thay thế) một lần trước khi đếm số phần tử trong Array.
Em chào Anh ak!
Em đang có 1 file đang không biết làm như nào để loại trừ kí tự xuất hiện lặp trong chuỗi n lần, sau khi loại trừ chỉ giữ lại 1 lần duy nhất số lần xuất hiện kí tự đó trong chuỗi. liệt kê lại chuỗi đó và cộng số kí tự có trong chuỗi. Mong Anh chiếu cố giúp cho. Nội dung mong muốn code Sub em ghi trong file đính kèm ak!
Cám ơn Anh nhiều nhiều!!
Trân trọng/
 

File đính kèm

  • Loại trừ bớt kí tự lặp lại trong chuỗi và liệt kê tính tổng.xls
    32.5 KB · Đọc: 3
Web KT
Back
Top Bottom