Các bác ạ, tình hình là công trình đầu tay.
Mục đích là từ clipboard, chuyển dấu "," -> "\" (cho mảng) và "," -> ";" để test công thức trên những máy tính đã thay đổi định dạng thập phân.
Vì cũng tập tành, đi tắt sưu tầm nên code chạy được nhưng thừa tè le.
Tạm thời em đã test công thức có và không có "{":
và nếu cố chấp thì dùng được (chuyển "\" trước rồi chuyển định dạng ";" sau)
Tuy nhiên có 2 vấn đề:
- nếu string trong mảng có dấu "," thì code sẽ chuyển luôn dẫn đến sai string của mảng.
- Em định tạo array xác định vị trí bắt đầu và kết thúc của từng cặp dấu "{}" (với công thức có nhiều mảng) rồi cho vòng lặp để replace từng mảng nhưng chưa viết được, đang bị thừa chỗ này (arrNgoac), mà thật ra là không biết sửa.
Vậy nên các bác bớt chút thời gian code giúp em kiểu array với ạ!!!
Mục đích là từ clipboard, chuyển dấu "," -> "\" (cho mảng) và "," -> ";" để test công thức trên những máy tính đã thay đổi định dạng thập phân.
Vì cũng tập tành, đi tắt sưu tầm nên code chạy được nhưng thừa tè le.
Tạm thời em đã test công thức có và không có "{":
Mã:
=COUNT(MMULT(--ISNUMBER(SEARCH("*"&{"Tổ chức Đảng","Công đoàn;","Hội Nông dân;","Hội Phụ nữ;","Đoàn thanh niên;","Hội Cựu chiến binh"}&"*",C2:C11)),ROW(1:6)^0)^0)
Mã:
={"Tổ chức Đảng","Công đoàn;","Hội Nông dân;","Hội Phụ nữ;","Đoàn thanh niên;","Hội Cựu chiến binh"} & {"Tổ chức Đảng","Công đoàn;","Hội Nông dân;","Hội Phụ nữ;","Đoàn thanh niên;","Hội Cựu chiến binh"} & {"Tổ chức Đảng","Công đoàn;","Hội Nông dân;","Hội Phụ nữ;","Đoàn thanh niên;","Hội Cựu chiến binh"}
Mã:
=IF(ISERROR(VLOOKUP($D2,sales_2021_W02!$D:$G,4,FALSE)),0,VLOOKUP($D2,sales_2021_W02!$D:$G,4,FALSE))
Tuy nhiên có 2 vấn đề:
- nếu string trong mảng có dấu "," thì code sẽ chuyển luôn dẫn đến sai string của mảng.
- Em định tạo array xác định vị trí bắt đầu và kết thúc của từng cặp dấu "{}" (với công thức có nhiều mảng) rồi cho vòng lặp để replace từng mảng nhưng chưa viết được, đang bị thừa chỗ này (arrNgoac), mà thật ra là không biết sửa.
Vậy nên các bác bớt chút thời gian code giúp em kiểu array với ạ!!!
Mã:
Sub test()
Dim DataObj As New MSForms.DataObject
DataObj.GetFromClipboard
Dim strcel, stri, strj, strNew, strcelNew As String, SoCapngoacnhon, i As Integer
strcel = DataObj.GetText
On Error GoTo Phay
SoCapngoacnhon = Len(strcel) - Len(Replace(strcel, "{", ""))
ReDim arrNgoac(1 To SoCapngoacnhon, 2)
Dim arrStr() As String
For i = 1 To Len(strcel)
stri = Mid(strcel, i, 1)
If stri = "{" Then
x = x + 1
arrNgoac(x, 1) = i
For j = i To Len(strcel)
strj = Mid(strcel, j, 1)
If strj = "}" Then
arrNgoac(x, 2) = j
Exit For
End If
Next
arrStr = Split(Mid(strcel, i + 1, j - i - 1), ",")
strNew = Join(arrStr, "\")
strcelNew = Replace(strcel, Mid(strcel, i + 1, j - i - 1), strNew)
End If
Next
If InStr(strcelNew, ",") Then
strcelNew = Replace(strcelNew, ",", ";")
End If
DataObj.SetText strcelNew
DataObj.PutInClipboard
Exit Sub
Phay:
If InStr(strcel, ",") Then
strcel = Replace(strcel, ",", ";")
End If
DataObj.SetText strcel
DataObj.PutInClipboard
Resume Next
End Sub