Nối chuổi có điều kiện. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

HiLander

Thành viên chính thức
Tham gia
18/5/09
Bài viết
64
Được thích
4
Các anh/chị làm ơn giúp dùm em su dung hàm nào trong excel để được như cột tô màu vàng bên dưới
 

File đính kèm

Các anh/chị làm ơn giúp dùm em su dung hàm nào trong excel để được như cột tô màu vàng bên dưới
Nói trước: Bài này chỉ có thể dùng code VBA mà thôi (công thức thường chẳng làm được)
Nếu bạn đồng ý giải pháp VBA thì vui lòng giải thích thêm chổ này:
- Cell C20 bạn muốn ra kết quả = 0248, 0249, 0251,0255, 02560
- 2 số đầu và số cuối OK, riêng số thứ 3 và số thứ 4 thì không biết bạn có nhầm không? 0249, 0251 là những số nào trong cột Số phiếu xuất? Lý ra phải là 02451, 02455 mới đúng chứ nhỉ?
 
Upvote 0
đúng rồi 02451, 02455 đó bạn ơi, mình đánh nhầm đó. Nếu như dùng code VBA, thì bạn insert thêm cột đơn đặt hàng kế bên cột số phiếu xuất và nội dung bên dưới giống như cột số phiếu xuât luôn nha bạn. Cám ơn bạn nhiều !
 
Upvote 0
đúng rồi 02451, 02455 đó bạn ơi, mình đánh nhầm đó
- Mở file của bạn lên
- Bấm Alt + F11 để vào cửa sổ lập trình
- Vào menu Insert, chọn Module (để chèn 1 module)
- Copy code dưới đây cho vào khung phải của Module vừa chèn:
PHP:
Function JoinText(ByVal Sep As String, ByVal IgnoreBlanks As Boolean, ParamArray sArray()) As String
  Dim tmpArr, SubArr, Arr(), Item, n As Long, tmp As String
  On Error Resume Next
  For Each SubArr In sArray
    tmpArr = SubArr
    If TypeName(tmpArr) <> "Variant()" Then
      tmp = Trim(CStr(tmpArr))
      If IgnoreBlanks = False Or Len(tmp) Then
        n = n + 1
        ReDim Preserve Arr(1 To n)
        Arr(n) = tmp
      End If
    Else
      For Each Item In tmpArr
        tmp = Trim(CStr(Item))
        If IgnoreBlanks = False Or Len(tmp) Then
          n = n + 1
          ReDim Preserve Arr(1 To n)
          Arr(n) = tmp
        End If
      Next
    End If
  Next
  If n Then JoinText = Join(Arr, Sep)
End Function
- Bấm Alt + Q để trở về bảng tính
- Gõ công thức này vào cell C17
PHP:
=JoinText(", ",TRUE,IF(($G$2:$G$13=$A17)*($H$2:$H$13=$B17),LEFT($E$2:$E$13,FIND("/",$E$2:$E$13)-1),""),"")
- Gõ xong, bấm tổ hợp phím Ctrl + Shift + Enter nhé
-------------------------------------------
Ở trên là những hướng dẫn để bạn làm quen với VBA thôi. Đương nhiên file đính kèm dưới đây tôi làm sẵn rồi (bạn không phải làm gì cả)
Lưu ý: Bạn phải Enable Macro thì code mới chạy được
-------------------------------------------
Nếu như dùng code VBA, thì bạn insert thêm cột đơn đặt hàng kế bên cột số phiếu xuất và nội dung bên dưới giống như cột số phiếu xuât luôn nha bạn. Cám ơn bạn nhiều !
Bạn nói chổ này tôi không hiểu gì cả
 

File đính kèm

Upvote 0
Cám ơn bạn nhiều lắm để mình làm như bạn hướng dẫn vào file của mình xem sao.
 
Upvote 0
bạn ơi làm ơn viết code dùm mình thêm cột đơn đặt hàng với.Thanks again!

[TABLE="width: 312"]
[TR]
[TD]Số phiếu xuất[/TD]
[TD="align: left"]Đơn đặt hàng[/TD]
[/TR]
[TR]
[TD="align: left"]0259, 0259[/TD]
[TD="align: right"]2703[/TD]
[/TR]
[TR]
[TD="align: left"]0265, 0271[/TD]
[TD="align: left"]2704, 2709[/TD]
[/TR]
[TR]
[TD="align: left"]0243, 0246, 0245[/TD]
[TD="align: left"]1191, 1193, 1195[/TD]
[/TR]
[TR]
[TD="align: left"]0248, 0249, 02451, 02455, 02560
[/TD]
[TD="align: left"]1196, 1198, 1120, 1123, 1125[/TD]
[/TR]
[/TABLE]
 
Upvote 0
Nhân đây xin hỏi mọi người 1 vấn đề:
- Công thức gõ trên bảng tính có đoạn
FIND("/",$E$2:$E$13).... Trong trường hợp hàm FIND bị lỗi (vì không tìm được dấu /) thì kết quả toàn bộ công thức trên trả về là gì?
- Để loại bỏ lỗi này, ta phải sửa code thế nào?
-------------------------------
bạn ơi làm ơn viết code dùm mình thêm cột đơn đặt hàng với.Thanks again!
Bạn muốn làm gì trong cột đơn đặt hàng? Phải nêu quy luật thì người ta mới giúp được chứ
 
Upvote 0
update

Thì tương ứng với đơn hàng là có một số đơn đặt hàng đó bạn ơi.

mình vừa chép code của bạn vào file của mình thì bị trường hợp này bạn làm ơn sửa giúp mình

bạn xem file mình vừa up lên nè
 

File đính kèm

Upvote 0
Thì tương ứng với đơn hàng là có một số đơn đặt hàng đó bạn ơi.

mình vừa chép code của bạn vào file của mình thì bị trường hợp này bạn làm ơn sửa giúp mình

bạn xem file mình vừa up lên nè
Tức cột đặt hàng làm tương tự, đúng không?
Vậy thì công thức cũng tương tự thôi ---> thay đổi tham chiếu phù hợp là được rồi
PHP:
=JoinText(", ",TRUE,IF(($G$2:$G$23=$A27)*($H$2:$H$23=$B27),$D$2:$D$23,""))
----------------
Còn vấn đề bạn hỏi:
số phiếu xuất 3425 sao mà nhiều quá bạn ơi
Trong dữ liệu bạn có bao nhiêu dòng chứa 3425 thì nó xuất ra bấy nhiêu thôi... Nếu bạn muốn lấy DUY NHẤT (tức trùng chỉ lấy một) thì đó là vấn đề khác ---> Phải viết thêm hàm
PHP:
Function UniqueList(ParamArray sArray())
  Dim Item, tmpArr, SubArr, tmp As String
  On Error Resume Next
  With CreateObject("Scripting.Dictionary")
    For Each SubArr In sArray
      tmpArr = SubArr
      If TypeName(tmpArr) <> "Variant()" Then
        If tmpArr <> "" Then .Add tmpArr, ""
      Else
        For Each Item In tmpArr
          If Item <> "" Then
            If Not .Exists(Item) Then .Add Item, ""
          End If
        Next
      End If
    Next
    UniqueList = .Keys
  End With
End Function
Hàm này cũng đặt trong module giống như hàm JoinText
Áp dụng:
- Công thức tại C27:
PHP:
=JoinText(", ",TRUE,UniqueList(IF(($G$2:$G$23=$A27)*($H$2:$H$23=$B27),LEFT($E$2:$E$23,FIND("/",$E$2:$E$23)-1),"")))
- Công thức tại D27:
PHP:
=JoinText(", ",TRUE,UniqueList(IF(($G$2:$G$23=$A27)*($H$2:$H$23=$B27),$D$2:$D$23,"")))
 

File đính kèm

Upvote 0
Cám ơn bạn nhiều nha, sẵn đây cho mình hỏi : Học lập trình excel có khó lắm không bạn, bạn có thể tư vấn dùm mình : Học ở đâu và học bao lâu mới viết code được vậy bạn
 
Upvote 0
Cám ơn bạn nhiều nha, sẵn đây cho mình hỏi : Học lập trình excel có khó lắm không bạn, bạn có thể tư vấn dùm mình : Học ở đâu và học bao lâu mới viết code được vậy bạn
Chẳng khó khăn gì, nó cũng như công thức thôi. Chỉ cần bạn đam mê sẽ học được
Còn việc bạn hỏi học ở đâu, có thể trả lời chắc chắn rằng HỌC TẠI ĐÂY LÀ NGON ĂN NHẤT
Bạn cứ lên diễn đàn thường xuyên, tham gia hỏi đáp, đọc các bài hướng dẫn liên quan đến lập trình, mua sách của diễn đàn về đọc... vân vân... tự nhiên sẽ giỏi
Giới thiệu bạn 3 bài viết này:
Chập chững đến VBA!
Kiến thức cơ bản về Visual Basic for Applications (VBA)
Giới thiệu Cơ bản về vòng lặp For . . . next

Từ từ tham khảo nhé!
Rất hoan nghênh bạn gia nhập vào bộ môn lập trình. Chúc thành công!
 
Upvote 0
Web KT

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

Back
Top Bottom