Nối các địa chỉ email lại 1 dòng (1 người xem)

Liên hệ QC

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

meocon194

Thành viên mới
Tham gia
4/8/15
Bài viết
7
Được thích
0
Chào các anh/chị.
Nhờ các anh chị hướng dẫn giúp em có cách nào để nối tất cả các địa chỉ email trong file đính kèm lại 1 dòng và ngăn cách nhau bằng dấu phẩy được không ạ? Vì em có rất nhiều địa chỉ email nếu ngồi copy hoặc đánh lại từng hàng thì mất rất nhiều thời gian ạ.
Vd: nối


Lại thành 1 hàng : Myphamaustralia@gmail.com,Ngoc21283@yahoo.com

Em cảm ơn rất nhiều
 
Chào các anh/chị.
Nhờ các anh chị hướng dẫn giúp em có cách nào để nối tất cả các địa chỉ email trong file đính kèm lại 1 dòng và ngăn cách nhau bằng dấu phẩy được không ạ? Vì em có rất nhiều địa chỉ email nếu ngồi copy hoặc đánh lại từng hàng thì mất rất nhiều thời gian ạ.
Vd: nối

Lại thành 1 hàng : Myphamaustralia@gmail.com,Ngoc21283@yahoo.com


Em cảm ơn rất nhiều

Có mà nhưng không có file :D
 
Cách đơn giản nhất: Insert dòng đầu, B1 gõ công thức =A2&","&B1, kéo xuống, lấy dòng dưới cùng.
 
Chào các anh/chị.
Nhờ các anh chị hướng dẫn giúp em có cách nào để nối tất cả các địa chỉ email trong file đính kèm lại 1 dòng và ngăn cách nhau bằng dấu phẩy được không ạ? Vì em có rất nhiều địa chỉ email nếu ngồi copy hoặc đánh lại từng hàng thì mất rất nhiều thời gian ạ.
Vd: nối

Lại thành 1 hàng : Myphamaustralia@gmail.com,Ngoc21283@yahoo.com


Em cảm ơn rất nhiều
Nếu vài trăm hay vài ngàn thì chỗ nào chứa được để nhìn.
Dùng hàm JoinFunc_Final, ứng biến nối 20 Mail vào 1 Cell (chỉ chọn 1 > 20) Copy và Paste xuống.
Bài đã được tự động gộp:

Sao em mở file của bác Lamna và Bác hao93tbdtn thấy giống nhau ạ.
Thì hàm đó là của ndu (bài 7 người ta đã nói rõ rồi mà).
 

File đính kèm

Công thức JoinText có dùng cho Excel 201 kg ạ? em mở file bác làm vô đó thì được nhưng mở file khác trên máy em làm thì nó không hiểu ạ?
Bạn mở file của bạn lên và bấm tổ hợp phím ALT + F11 sau đó chọn Insert -> Module và chép đọan code bên dưới vào.
Trở về file excel chọn File -> Save As -> Browse -> tại mục Save as type bạn chọn Excell Macro-Enable Worbook -> chọn nơi lưu file excel -> bấm Save
Hoặc xem video file đính kèm để xem hướng dẫn
Mã:
Option Explicit
Function JoinText(ByVal Delimiter As String, ParamArray Arrays()) As String
  Dim aDest()   As Variant
  Dim aSub      As Variant
  Dim item      As Variant
  Dim idx       As Long
  Dim n         As Long
  Dim sItem     As String
  'On Error Resume Next
  For n = LBound(Arrays) To UBound(Arrays)
    aSub = Arrays(n)
    If Not IsArray(aSub) Then aSub = Array(aSub)
    For Each item In aSub
      If TypeName(item) <> "Error" Then
        sItem = CStr(item)
        idx = idx + 1
        ReDim Preserve aDest(1 To idx)
        aDest(idx) = sItem
      End If
    Next
  Next
  If idx Then JoinText = Join(aDest, Delimiter)
End Function
Function JoinIf(ByVal Delimiter As String, ByVal CriteriaArray, ByVal Criteria, Optional ByVal TargetArray) As String
  Dim aDest()       As Variant
  Dim aCriteria     As Variant
  Dim aTarget       As Variant
  Dim sCriteria     As Variant
  Dim sTarget       As Variant
  Dim dic           As Object
  Dim bComp         As Boolean
  Dim idx           As Long
  Dim dTmpVal       As Double

  'On Error Resume Next
  Set dic = CreateObject("Scripting.Dictionary")
  If IsMissing(TargetArray) Then TargetArray = CriteriaArray
  aCriteria = ConvertTo1DArray(CriteriaArray)
  aTarget = ConvertTo1DArray(TargetArray)
  If (Not IsArray(aCriteria)) Or (Not IsArray(aTarget)) Then Exit Function

  bComp = (InStr("<>=", Left(Criteria, 1)) > 0)
  For idx = LBound(aTarget) To UBound(aTarget)
    sCriteria = aCriteria(idx): sTarget = aTarget(idx)
    If TypeName(sCriteria) <> "Error" Then
      If TypeName(sTarget) <> "Error" Then
        If bComp And Len(Criteria) Then
          dTmpVal = CDbl(aCriteria(idx))
          If Evaluate(dTmpVal & Criteria) Then
            If Not dic.Exists(sTarget) Then dic.Add sTarget, ""
          End If
        Else
          If (Left(Criteria, 1) = "!") Then
            If Not (UCase(sCriteria) Like UCase(Mid(Criteria, 2))) Then
              If Not dic.Exists(sTarget) Then dic.Add sTarget, ""
            End If
          Else
            If (UCase(sCriteria) Like UCase(Criteria)) Then
              If Not dic.Exists(sTarget) Then dic.Add sTarget, ""
            End If
          End If
        End If
      End If
    End If
  Next
  If dic.Count Then
    aDest = dic.Keys
    JoinIf = Join(aDest, Delimiter)
  End If
  Set dic = Nothing
  'If Err.Number Then MsgBox Err.Description
End Function
Private Function ConvertTo1DArray(ByVal SourceArray)
  Dim aDest()   As Variant
  Dim aSource   As Variant
  Dim item      As Variant
  Dim idx       As Long
  'On Error Resume Next
  aSource = SourceArray
  If Not IsArray(aSource) Then aSource = Array(aSource)
  For Each item In aSource
    idx = idx + 1
    ReDim Preserve aDest(1 To idx)
    aDest(idx) = item
  Next
  ConvertTo1DArray = aDest
  'If Err.Number Then MsgBox Err.Description
End Function
Function UniqueList(ParamArray Arrays())
  Dim aDest()   As Variant
  Dim aSub      As Variant
  Dim item      As Variant
  Dim idx       As Long
  Dim n         As Long
  Dim sItem     As String
  Dim dic       As Object
  'On Error Resume Next
  Set dic = CreateObject("Scripting.Dictionary")
  For n = LBound(Arrays) To UBound(Arrays)
    aSub = Arrays(n)
    If Not IsArray(aSub) Then aSub = Array(aSub)
    For Each item In aSub
      If TypeName(item) <> "Error" Then
        sItem = CStr(item)
        If Len(sItem) Then
          If Not dic.Exists(sItem) Then dic.Add sItem, Empty
        End If
      End If
    Next
  Next
  If dic.Count Then UniqueList = dic.Keys
  Set dic = Nothing
  'If Err.Number Then MsgBox Err.Description
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các anh/chị.
Nhờ các anh chị hướng dẫn giúp em có cách nào để nối tất cả các địa chỉ email trong file đính kèm lại 1 dòng và ngăn cách nhau bằng dấu phẩy được không ạ? Vì em có rất nhiều địa chỉ email nếu ngồi copy hoặc đánh lại từng hàng thì mất rất nhiều thời gian ạ.
Vd: nối

Lại thành 1 hàng : Myphamaustralia@gmail.com,Ngoc21283@yahoo.com


Em cảm ơn rất nhiều

Tôi có cách làm như sau:
- Giả sử các ô từ A1 đến A10 có địa chỉ email
- Bước 1: quét chọn vùng A1:A10
- Bước 2: ấn F9 để hiện ra mảng kết quả như sau: ={...;...;...} (tùy thiết lập trong Control Panel có thể không phải dấu ";" mà là dấu ",".
- Bước 3: xóa bỏ dấu "=", "{" và "}"
- Bước 4: ấn Ctrl + H, tại Find what điền: ";", tại Replace with điền ","
Chúc bạn thành công.
 
Công thức JoinText có dùng cho Excel 201 kg ạ? em mở file bác làm vô đó thì được nhưng mở file khác trên máy em làm thì nó không hiểu ạ?
Xin lỗi bác em đánh nhầm ạ Excel 2010 ạ. Nhưng em mở thêm sheet copy qua file bác gửi làm được rồi ạ. Em cảm ơn các bác đã giúp đỡ em nhé
Bài đã được tự động gộp:

Bạn mở file của bạn lên và bấm tổ hợp phím ALT + F11 sau đó chọn Insert -> Module và chép đọan code bên dưới vào.
Trở về file excel chọn File -> Save As -> Browse -> tại mục Save as type bạn chọn Excell Macro-Enable Worbook -> chọn nơi lưu file excel -> bấm Save
Hoặc xem video file đính kèm để xem hướng dẫn
Mã:
Option Explicit
Function JoinText(ByVal Delimiter As String, ParamArray Arrays()) As String
  Dim aDest()   As Variant
  Dim aSub      As Variant
  Dim item      As Variant
  Dim idx       As Long
  Dim n         As Long
  Dim sItem     As String
  'On Error Resume Next
  For n = LBound(Arrays) To UBound(Arrays)
    aSub = Arrays(n)
    If Not IsArray(aSub) Then aSub = Array(aSub)
    For Each item In aSub
      If TypeName(item) <> "Error" Then
        sItem = CStr(item)
        idx = idx + 1
        ReDim Preserve aDest(1 To idx)
        aDest(idx) = sItem
      End If
    Next
  Next
  If idx Then JoinText = Join(aDest, Delimiter)
End Function
Function JoinIf(ByVal Delimiter As String, ByVal CriteriaArray, ByVal Criteria, Optional ByVal TargetArray) As String
  Dim aDest()       As Variant
  Dim aCriteria     As Variant
  Dim aTarget       As Variant
  Dim sCriteria     As Variant
  Dim sTarget       As Variant
  Dim dic           As Object
  Dim bComp         As Boolean
  Dim idx           As Long
  Dim dTmpVal       As Double

  'On Error Resume Next
  Set dic = CreateObject("Scripting.Dictionary")
  If IsMissing(TargetArray) Then TargetArray = CriteriaArray
  aCriteria = ConvertTo1DArray(CriteriaArray)
  aTarget = ConvertTo1DArray(TargetArray)
  If (Not IsArray(aCriteria)) Or (Not IsArray(aTarget)) Then Exit Function

  bComp = (InStr("<>=", Left(Criteria, 1)) > 0)
  For idx = LBound(aTarget) To UBound(aTarget)
    sCriteria = aCriteria(idx): sTarget = aTarget(idx)
    If TypeName(sCriteria) <> "Error" Then
      If TypeName(sTarget) <> "Error" Then
        If bComp And Len(Criteria) Then
          dTmpVal = CDbl(aCriteria(idx))
          If Evaluate(dTmpVal & Criteria) Then
            If Not dic.Exists(sTarget) Then dic.Add sTarget, ""
          End If
        Else
          If (Left(Criteria, 1) = "!") Then
            If Not (UCase(sCriteria) Like UCase(Mid(Criteria, 2))) Then
              If Not dic.Exists(sTarget) Then dic.Add sTarget, ""
            End If
          Else
            If (UCase(sCriteria) Like UCase(Criteria)) Then
              If Not dic.Exists(sTarget) Then dic.Add sTarget, ""
            End If
          End If
        End If
      End If
    End If
  Next
  If dic.Count Then
    aDest = dic.Keys
    JoinIf = Join(aDest, Delimiter)
  End If
  Set dic = Nothing
  'If Err.Number Then MsgBox Err.Description
End Function
Private Function ConvertTo1DArray(ByVal SourceArray)
  Dim aDest()   As Variant
  Dim aSource   As Variant
  Dim item      As Variant
  Dim idx       As Long
  'On Error Resume Next
  aSource = SourceArray
  If Not IsArray(aSource) Then aSource = Array(aSource)
  For Each item In aSource
    idx = idx + 1
    ReDim Preserve aDest(1 To idx)
    aDest(idx) = item
  Next
  ConvertTo1DArray = aDest
  'If Err.Number Then MsgBox Err.Description
End Function
Function UniqueList(ParamArray Arrays())
  Dim aDest()   As Variant
  Dim aSub      As Variant
  Dim item      As Variant
  Dim idx       As Long
  Dim n         As Long
  Dim sItem     As String
  Dim dic       As Object
  'On Error Resume Next
  Set dic = CreateObject("Scripting.Dictionary")
  For n = LBound(Arrays) To UBound(Arrays)
    aSub = Arrays(n)
    If Not IsArray(aSub) Then aSub = Array(aSub)
    For Each item In aSub
      If TypeName(item) <> "Error" Then
        sItem = CStr(item)
        If Len(sItem) Then
          If Not dic.Exists(sItem) Then dic.Add sItem, Empty
        End If
      End If
    Next
  Next
  If dic.Count Then UniqueList = dic.Keys
  Set dic = Nothing
  'If Err.Number Then MsgBox Err.Description
End Function
Cảm ơn bác nhe. Mình làm thành công rồi.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom