Trang 2 của 3 Đầu tiênĐầu tiên 123 CuốiCuối
Kết quả 11 đến 20 của 26

Chủ đề: tách dãy số cách nhau dấu phẩy

  1. #11
    kanhtran Guest

    Trích dẫn Gửi bởi nanabi
    anh ơi thế em có 1 số 789642 em muốn tách làm 6 cột mỗi cột 1 số thì phải dùng đoạn code như thế nào
    Góp 1 cách củ chuối:

    Giả sử con số 789642 của bạn đang ở ô A1.

    Nếu bạn muốn tách con số có 6 chữ số này vào 6 ô liên tiếp (nằm trên cùng 1 dòng), bạn chọn hết 6 ô đó rồi nhập công thức này:
    40pxNhập xong, nhấn Ctrl+Enter. Hoặc nhập công thức trong ô đầu tiên rồi copy đến ô thứ 6 cũng được.

    Nếu thích sau khi tách xong, mà chúng vẫn là những con số (cộng trừ nhân chia được), thì bạn thêm *1 (hay +0, ^1,...) vào sau công thức trên.

  2. #12
    dieulypretty Guest
    Trích dẫn Gửi bởi ca_dafi
    Giả sử ô A1=789642
    Ô B1 bạn gõ công thức:

    <div class="bbcode_container">
    <div class="bbcode_description">PHP Code:
    </div>
    </div>
    </div>
    Công thức này, thứ nhất là dài quá mức cần thiết, thứ hai là chỉ đúng khi không nhâp vào cột A!

  3. #13
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi BNTT
    Công thức này, thứ nhất là dài quá mức cần thiết, thứ hai là chỉ đúng khi không nhâp vào cột A!
    Dạ em biết công thức của em thừa rồi! Cẩn thận quá mức nhiều khi cũng không hay! Khi làm thì nghĩ nếu lấy MID với thứ tự lớn hơn độ dài chuỗi thì nó sẽ báo lỗi, rốt cục nó lại không báo lỗi! Hóa ra bẫy lỗi thừa!

    Cảm ơn anh BNTT!

  4. #14
    datxanhmb81 Guest
    cảm ơn bạn rất nhiều hóa ra là như vậy

  5. #15
    tungbkhd Guest
    [QUOTE="BNTT"]
    Góp 1 cách củ chuối:

    Giả sử con số 789642 của bạn đang ở ô A1.

    Nếu bạn muốn tách con số có 6 chữ số này vào 6 ô liên tiếp (nằm trên cùng 1 dòng), bạn chọn hết 6 ô đó rồi nhập công thức này:40px
    cảm ơn bạn nhưng cái công thức này chỉ làm được với 1 dòng thôi hả, còn nhiều dòng thì phải đổi thành =MID($A1, COLUMN(A$1), 1) [IMG]images/smilies/a12.gif[/IMG] <font color="DarkOrchid">mà mình chỉ làm được khi số ở cột A thôi hả còn mình thử để số ở ô khác thì lại không được ví dụ mình số 789642 ở ô G10 mình đánh hàm =MID($G10,COLUMN(G$10),1) ở ô H10 lại không được

  6. #16
    thanducha Guest
    Trích dẫn Gửi bởi nanabi
    cảm ơn bạn nhưng cái công thức này chỉ làm được với 1 dòng thôi hả, còn nhiều dòng thì phải đổi thành =MID($A1, COLUMN(A$1), 1)
    Thì đúng rồi! Tùy từng bài toán cụ thể mà bạn đặt dấu $ vào đâu chứ! Cái này căn bản mà bạn!

    Thêm nữa, bạn phải biết hàmn Column() nó trả về giá trị gì thì mới dùng được! Bây giờ bạn thử gõ =Column(G10) vào một ô nào đó xem coi giá trị của nó bao nhiêu rồi rút ra kết luận!

  7. #17
    chandat Guest
    Trích dẫn Gửi bởi nanabi
    anh ơi thế em có 1 số 789642 em muốn tách làm 6 cột mỗi cột 1 số thì phải dùng đoạn code như thế nào
    MID cũng hay nhưng nếu lập trình thì MID là họ các hàm xử lý chuỗi, một số ngôn ngữ phân kiểu rạch ròi thì có giải pháp thế này.

    789642 = 7*10^5 + 8*10^4 + 9*10^3 ... + 2*10^0

    789642/10 lấy nguyên và 789642 - 789640 được 2 là số hàng đơn vị
    tiếp tục với các số hàng chục hàng trăm...

    Tuy hơn buồn cười xong thực tế lập trình đôi khi tư duy đơn giản như vậy

  8. #18
    mevabe Guest
    Trích dẫn Gửi bởi hung1981
    Mình có dãy số ví dụ:
    1178.38,1179.02,1177.11,1175.2.................... ..............
    Bạn nào giúp mình viết 1 function tách nó thành từng số riêng từng ô tự động mà không giới hạn số trong dãy đó
    ví dụ: dãy đó mình đặt ở ô A1 thì sẽ tách tự động sang các cột riêng B1, C1...
    Vấn đề nảy đã có nhiều trên GPE, nhưng thường chỉ giải quyết trong 1 trường hợp cụ thể.
    Để hàm mang tính tổng quát, phải giải quyết 2 yêu cầu:
    1. Cho phép thay đổi dấu tách trong hàm.
    2. Có thể fill công thức sang ô khác mà hàm tách đúng số 1, số 2, ... theo thứ tự fill. Tức là hàm phải có khả năng nhận biết vị trí của nó so với ô chứa hàm đầu tiên.
    Muốn thế, hàm cần thiết phải có 3 đối số:
    number: chuỗi cần tách số
    str: chuỗi ngăn cách các số trong number
    idCol hoặc idRow: số thứ tự cột, dòng ô đầu tiên chứa hàm tách số. Hàm các ô khác căn cứ vào số này để biết vị trí số cần tách.
    Do có thể fill cột, fill dòng nên có 2 hàm riêng biệt


    Mã:
    Function TachSoCol(number As String, str As String, idC1 As Long) As Double
    Dim idC2 As Long, arNum, SoTach
    idC2 = Application.Caller.Column
    arNum = Split(number, str)
    SoTach = Trim(arNum(idC2 - idC1))
    If IsNumeric(SoTach) Then
      TachSoCol = CDbl(SoTach)
    Else
      For i = 1 To Len(SoTach)
        If IsNumeric(Mid(SoTach, i, 1)) Then
          TachSoCol = TachSoCol & Mid(SoTach, i, 1)
        End If
      Next
    End If
    End Function
    Mã:
    Function TachSoRow(number As String, str As String, idR1 As Long) As Double
    Dim idR2 As Long, arNum, SoTach
    idR2 = Application.Caller.Row
    arNum = Split(number, str)
    SoTach = Trim(arNum(idR2 - idR1))
    If IsNumeric(SoTach) Then
      TachSoRow = CDbl(SoTach)
    Else
      For i = 1 To Len(SoTach)
        If IsNumeric(Mid(SoTach, i, 1)) Then
          TachSoRow = TachSoRow & Mid(SoTach, i, 1)
        End If
      Next
    End If
    End Function
    Chuỗi cần tách tại B2
    Công thức tách cột tại C2=TachSoCol($B$2;"/";3)
    số 3 là số thứ tự cột C2, fill công thức sang các ô D2, E2, F2, G2. Tại G2 báo lỗi #VALUE! vì vượt số cần tách.
    Công thức tách dòng B5=TachSoRow($B$2;"/";5)
    số 5 là số thứ tự dòng B5, fill công thức xuống B6, B7, B8.

    Chú ý:
    1. Hàm sau khi tách chuỗi, kiểm tra chuỗi cần tách, nếu không phải là số sẽ loại tất cả các ký tự không phải số ra khỏi chuỗi.
    2. Đối với dấu ngàn, dấu thập phân: nếu Excel nhận dạng đúng sẽ giữ nguyên, nếu sai sẽ loại các dấu đó ra khỏi chuỗi,

  9. #19
    anhngoctmy Guest
    Trích dẫn Gửi bởi cadafi
    Bạn chép đoạn code này vào module, sau đó tạo một nút lệnh (hoặc phím tắt) kích thủ tục này chạy, trước khi chạy phải chọn vùng cần tách số (có thể là 1 ô hoặc nhiều dòng, nhưng chỉ duy nhất 1 cột)

    Trong file ví dụ, bạn kéo chuột chọn từ ô A4:A6, sau đó click nút [Process]
    trong hộp input box gõ vào B8, dữ liệu sẽ được tách ra và copy bắt đầu từ ô B8.

    <div class="bbcode_container">
    <div class="bbcode_description">PHP Code:
    </div>
    </div>
    </div>
    Em muốn xuất dữ liệu theo dòng trong 1 cột thì Edit code ra làm sao các bác chỉ giúp em voi "TextToRows"

  10. #20
    ntthu.831 Guest
    Trích dẫn Gửi bởi ngocvinh75
    Em muốn xuất dữ liệu theo dòng trong 1 cột thì Edit code ra làm sao các bác chỉ giúp em voi "TextToRows"
    Mã nguồn PHP:
    Function TachChuoiSo(NumString As String, PhC As String) Dim Arr, jJ As Integer, SoFT As Byte Arr = Split(NumString, PhC) SoFT = 1 + UBound(Arr): ReDim MDL(SoFT, 1) As Long For jJ = 1 To SoFT MDL(jJ, 1) = CLng(Arr(jJ - 1)) Next jJ TachChuoiSo = MDLEnd Function  
    Cách dùng: Dùng chuột tô chọn gần chục ô liên tục trong 1 cột chưa dữ liệu;
    Sau đó bấm chuột lên thanh công thức & nhập cú fáp =TachChuoiSo(B3,",")
    Cuối cùng kết thúc bằng tổ hợp fím giành cho hàm mảng.

Trang 2 của 3 Đầu tiênĐầu tiên 123 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •