Giúp Hàm VBA hoặc Code nối tên hàng và SL (1 người xem)

Liên hệ QC

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

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào cả nhà GPE !
Em muốn dùng 1 đoạn Code để nối tên hàng và Số lượng lại. em có gửi File mong mọi người giúp đở
 

File đính kèm

Mã:
Function NoiSL(rng As Range) As String
Dim r As Long, tmp As Variant
If rng.Columns.Count <> 2 Then Exit Function
tmp = rng.Value
For r = 1 To UBound(tmp, 1)
    NoiSL = NoiSL & tmp(r, 1) & " [" & tmp(r, 2) & "], "
Next r
NoiSL = Left(NoiSL, Len(NoiSL) - 2) 'Kết quả khác với yêu cầu vì bỏ 2 ký tự cuối "[SIZE=3][COLOR=#ff0000], [/COLOR][/SIZE]". Nếu không cần bỏ 2 ký tự này thì xóa dòng này đi.
End Function
Công thức ở bảng tính:
E5=NoiSL(B3:C7)
 
Upvote 0

File đính kèm

Upvote 0
Dạ code của anh quá tuyệt.Em chân thành cảm ơn. nhưng mà em muốn sau tên hàng SL cuối cùng thêm giúp em dấu "," ( dấu phẩy ) và thêm 1 Khoảng Trắng nữa , và Sau dấu phẩy mỗi tên hàng phải có 1 dấu Cách nữa .Nói chung Code chỉ Ok khi E5=E6 = true thôi anh

E5 Em mong muốn: Khô Bò [4], Khăn Lạnh [3], bánh kem [2], 1 Giỏ Đồ khô [1], Bưởi [0.1], Và 1 khoảng Trắng nữa
E6 Code của anh: Khô Bò [4] ,Khăn Lạnh [3] ,bánh kem [2] ,1 Giỏ Đồ khô [1] ,Bưởi [0.1]

Bạn xem file đính kèm nhé!
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ em thank anh nhiều lắm. ý là em muốn =NoiSL(B3:C50) LUÔN chứ nhiều khi Tên hàng em ít 5 dòng hay 10 dòng thì chẳng lẽ em thay đổi lại công thức
Mã:
Function NoiSL(rng As Range) As String
Dim r As Long, tmp As Variant
If rng.Columns.Count <> 2 Then Exit Function
tmp = rng.Value
For r = 1 To UBound(tmp, 1)
    NoiSL = NoiSL & tmp(r, 1) & " [" & tmp(r, 2) & "], "
Next r
NoiSL = Left(NoiSL, Len(NoiSL) - 2) 'Kết quả khác với yêu cầu vì bỏ 2 ký tự cuối "[SIZE=3][COLOR=#ff0000], [/COLOR][/SIZE]". Nếu không cần bỏ 2 ký tự này thì xóa dòng này đi.
End Function
Công thức ở bảng tính:
E5=NoiSL(B3:C7)
 
Upvote 0
Dạ em thank anh nhiều lắm. ý là em muốn =NoiSL(B3:C50) LUÔN chứ nhiều khi Tên hàng em ít 5 dòng hay 10 dòng thì chẳng lẽ em thay đổi lại công thức

Mã:
Function NoiSL(rng As Range) As String
Dim r As Long, tmp As Variant
If rng.Columns.Count <> 2 Then Exit Function
tmp = rng.Value
For r = 1 To UBound(tmp, 1)
    If tmp(r, 1) <> NullString Then NoiSL = NoiSL & tmp(r, 1) & " [" & tmp(r, 2) & "], "
Next r
End Function
 
Upvote 0
Code Lỗi rồi anh =NoiSL(B3:C50) nó báo lỗi
Mã:
Function NoiSL(rng As Range) As String
Dim r As Long, tmp As Variant
If rng.Columns.Count <> 2 Then Exit Function
tmp = rng.Value
For r = 1 To UBound(tmp, 1)
    If tmp(r, 1) <> NullString Then NoiSL = NoiSL & tmp(r, 1) & " [" & tmp(r, 2) & "], "
Next r
End Function
 
Upvote 0
"Chết mệt" với ông tướng này.
Lỗi làm sao thì nêu rõ lỗi hoặc chụp cái hình úp lên...
p/s: Vui lòng cẩn trọng kiểm tra kỹ đã nhé.

View attachment 169893

Vậy thôi nha!!!
Lỗi chỗ này nè:
Mã:
Function NoiSL(rng As Range) As String
Dim r As Long, tmp As Variant
If rng.Columns.Count <> 2 Then Exit Function
tmp = rng.Value
For r = 1 To UBound(tmp, 1)
    If tmp(r, 1) <> [COLOR=#ff0000]NullString[/COLOR] Then NoiSL = NoiSL & tmp(r, 1) & " [" & tmp(r, 2) & "], "
Next r
End Function
-----------------------------------------------------
Chào cả nhà GPE !
Em muốn dùng 1 đoạn Code để nối tên hàng và Số lượng lại. em có gửi File mong mọi người giúp đở
Nếu là "dân chơi" thì mời nghiên cứu code này:
Mã:
Function JoinText(ByVal Delimiter As String, ParamArray Arrays()) As String
  Dim aTmp, arr(), Item, tmp As String
  Dim i As Long, n As Long
  'On Error Resume Next
  For i = LBound(Arrays) To UBound(Arrays)
    aTmp = Arrays(i)
    If Not IsArray(aTmp) Then aTmp = Array(aTmp)
    For Each Item In aTmp
      If TypeName(Item) <> "Error" Then
        tmp = CStr(Item)
        n = n + 1
        ReDim Preserve arr(1 To n)
        arr(n) = tmp
      End If
    Next
  Next
  If n Then JoinText = Join(arr, Delimiter)
End Function
Hơi khó xài chút nhưng đa năng, nối chuỗi với độ tùy biến cao
 
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom