nguyendinhvinh0410
Thành viên mới

- Tham gia
- 8/5/13
- Bài viết
- 25
- Được thích
- 0
Chào các Pro! xin giúp mình với, mình muốn ghép các chuỗi theo điều kiện.
Ví dụ (có đính kèm file) giúp nhé các Pro cần gấp lắm ạ!
Chào các Pro! xin giúp mình với, mình muốn ghép các chuỗi theo điều kiện.
Ví dụ (có đính kèm file) giúp nhé các Pro cần gấp lắm ạ!
Dùng cột phụ, bạn xem file đính kèm
Mình gặp một vấn đề nữa là kết quả ghép đôi theo điều kiện bị trùng. Ví dụ: con đường A có bốn đoạn theo kết cấu là: đoạn 1 bê tông; đoạn 2 đất; đoạn 3 bê tông; đoạn 4 đất. Vậy khi mình ghép chuỗi theo con đường A thì kết quả là: bê tôngđấtbê tôngđât. Các pro giúp mình rút gọn cụm kết cấu trên thành "bê tôngđất". Cám ơn!
CT của bạn chuẩn rồi ạ, tuy nhiên ở cột phụ có thể rút ngắn thành thế này cũng được : D4 =IF(B4<>B3,C4,D3&C4)
Trước có làm một bài tương tự nhưng dữ liệu tại cột "STT" không liên tục nên áp dụng công thức trên. Giờ bổn cũ soạn lại không nhìn thấy rõ là số liệu liên tục.
Thank!
Xin giúp rút gọn kết quả trùng lặp ạ (file đính kèm)
Xin giúp rút gọn kết quả trùng lặp ạ (file đính kèm)
sumproduct(max(($b$4:$b$14=b4)*row($b$4:$b$14))) bác ơi giải thích dùm ạ!dùng cột phụ, bạn xem file đính kèm
Bạn xem thử File xem được chưa
gop = gop & Cells(j, 4)
gop = gop & " " & Cells(j, 4)
Dạo này trình VBA lên rồi đấy,hii.
Bạn có thể thay dòng:
PHP:gop = gop & Cells(j, 4)
Bằng dòng:
PHP:gop = gop & " " & Cells(j, 4)
?
sumproduct(max(($b$4:$b$14=b4)*row($b$4:$b$14))) bác ơi giải thích dùm ạ!
Đại khái làsumproduct(max(($b$4:$b$14=b4)*row($b$4:$b$14))) bác ơi giải thích dùm ạ!
sumproduct(max(($b$4:$b$14=b4)*row($b$4:$b$14))) bác ơi giải thích dùm ạ!
Xin giúp rút gọn kết quả trùng lặp ạ (file đính kèm)
Function JoinIf(ByVal Delimiter As String, ByVal CriteriaArray, ByVal Criteria, Optional ByVal TargetArray) As String
Dim aTmpCrit, aTmpDes, tmp1, tmp2, arr(), dic As Object
Dim bComp As Boolean, Chk As Boolean
Dim i As Long, j As Long, k As Long, dTmpVal As Double
Set dic = CreateObject("Scripting.Dictionary")
If IsMissing(TargetArray) Then TargetArray = CriteriaArray
aTmpCrit = ConvertTo1DArray(CriteriaArray)
aTmpDes = ConvertTo1DArray(TargetArray)
If (Not IsArray(aTmpCrit)) Or (Not IsArray(aTmpDes)) Then Exit Function
On Error Resume Next
bComp = (InStr("<>=", Left(Criteria, 1)) > 0)
For i = LBound(aTmpDes) To UBound(aTmpDes)
tmp1 = aTmpCrit(i): tmp2 = aTmpDes(i)
If TypeName(tmp1) <> "Error" Then
If TypeName(tmp2) <> "Error" Then
If bComp And Len(Criteria) Then
dTmpVal = CDbl(aTmpCrit(i))
If Evaluate(dTmpVal & Criteria) Then dic.Add tmp2, ""
Else
If (Left(Criteria, 1) = "!") Then
If Not (UCase(tmp1) Like UCase(Mid(Criteria, 2, Len(Criteria)))) Then dic.Add tmp2, ""
Else
If (UCase(tmp1) Like UCase(Criteria)) Then dic.Add tmp2, ""
End If
End If
End If
End If
Next
If dic.Count Then
arr = dic.Keys
JoinIf = Join(arr, Delimiter)
End If
End Function
Private Function ConvertTo1DArray(ByVal SourceArray)
Dim aTmp, Item, arr()
Dim n As Long
On Error Resume Next
aTmp = SourceArray
If Not IsArray(aTmp) Then aTmp = Array(aTmp)
For Each Item In aTmp
n = n + 1
ReDim Preserve arr(1 To n)
arr(n) = Item
Next
ConvertTo1DArray = arr
End Function
=JoinIf([COLOR=#ff0000]""[/COLOR],$B$4:$B$12,B4,$D$4:$D$12)
=JoinIf([COLOR=#ff0000]"-"[/COLOR],$B$4:$B$12,B4,$D$4:$D$12)
Mong các bác giải thích giúp đoạn hàm này ạ, mặc dù có nghiên cứu nghiêm túc nhưng không hiểu được ạ.
F4=indirect("e"&sumproduct(max(($b$4:$b$12=b4)*row($b$4:$b$12))))