- Tham gia
- 21/11/22
- Bài viết
- 20
- Được thích
- -1
Cái này dùng hàm cũng được, cần gì code đâu bạn.Chào GPE ! Tồi cần viết 1 đoạn code để nối kết quả cột A và cột B cho ra cột C. Nhờ anh chỉ diễn đàn giúp đỡ. Xin cảm ơn
View attachment 283901
Dữ liệu 1 triệu dòng làm công thức nó treo File bạn ơiCái này dùng hàm cũng được, cần gì code đâu bạn.
Sub noiHonMotTrieuDong()
const sRangeData = "A2:B1048500"
const sDelim = " # "
const sCellTarget = "C2"
Dim data as variant, i as long, strA as string, listRes as variant
data = range(sRangeData).value2
redim listRes(1 to ubound(data,1),1 to 1)
For i=1 to ubound(data,1)
strA = data(i,1)
if vba.len(strA)>0 then
listRes(i,1)=strA & sDelim & data(i,2)
End if
Next i
Range(sCellTarget).Resize(ubound(listRes,1),1).value=listRes
erase data, listRes
End sub
Sub VBconcate()
Dim sArr As Variant, dArr As Variant
Dim i As Long
sArr = Range("A1:B" & Range("B" & Rows.Count).End(xlUp).Row)
ReDim dArr(1 To UBound(sArr))
For i = 1 To UBound(sArr)
dArr(i) = sArr(i, 1) & " # " & sArr(i, 2)
Next i
Range("C1").Resize(UBound(sArr)) = WorksheetFunction.Transpose(dArr)
End Sub
Chào GPE ! Tồi cần viết 1 đoạn code để nối kết quả cột A và cột B cho ra cột C ( khoảng 1 triệu dòng ). Nhờ anh chỉ diễn đàn giúp đỡ. Xin cảm ơn
View attachment 283901
Cảm ơn bạn. Mình thử lên 500k dòng lại báo lỗiBạn xài thử.PHP:Sub VBconcate() Dim sArr As Variant, dArr As Variant Dim i As Long sArr = Range("A1:B" & Range("B" & Rows.Count).End(xlUp).Row) ReDim dArr(1 To UBound(sArr)) For i = 1 To UBound(sArr) dArr(i) = sArr(i, 1) & " # " & sArr(i, 2) Next i Range("C1").Resize(UBound(sArr)) = WorksheetFunction.Transpose(dArr) End Sub
Tuy mình vẫn thấy cấn cấn
File này làm nhiều việc khác nữa. chứ không phải để chỉ chạy cái này
Lỗi gì bạn và cái file 1 triệu dòng thần thánh nó như nào ? Cấu trúc dữ liệu ra sao.Cảm ơn bạn. Mình thử lên 500k dòng lại báo lỗi.
Đây là nói chuyện "1 triệu dòng" (kinh điển GPE, nhỏng nhẻo quen rồi). Cấu hình tư tưởng chứ máy tính chỉ là chuyện phụ.chưa đề cập đến cấu hình máy tính.
Anh ơi file nhiều công thức mảng rồi thêm thằng này giọt nước tràn ly anh à.Đây là nói chuyện "1 triệu dòng" (kinh điển GPE, nhỏng nhẻo quen rồi). Cấu hình tư tưởng chứ máy tính chỉ là chuyện phụ.
Công thức chỉ có giản dị IF và &. Làm cách nào treo máy thì thua luôn.
Loại cong thức đơn giỏn như vầy là loại để lkamf cột phụ.Anh ơi file nhiều công thức mảng rồi thêm thằng này giọt nước tràn ly anh à.
Đúng chính xác, Bạn này hiểu ý mình. Ví phải làm cái này để chia nhỏ ra tác vụ để không bị đầy bộ nhớLoại cong thức đơn giỏn như vầy là loại để lkamf cột phụ.
Đúng với kinh điển bài toán dữ liệu lớn: dùng cột phụ để giảm công thức mảng (hoặc tính theo mảng)
Cảm ơn bạn. Mình thử lên 500k dòng lại báo lỗi
Sub VBconcate()
Dim sArr As Variant, dArr As Variant
Dim i As Long
sArr = Range("A1:B" & Range("B" & Rows.Count).End(xlUp).Row)
ReDim dArr(1 To UBound(sArr))
For i = 1 To UBound(sArr)
dArr(i) = sArr(i, 1) & " # " & sArr(i, 2)
Next i
Application.Calculation = xlManual
Range("C1").Resize(UBound(sArr)) = WorksheetFunction.Transpose(dArr)
Application.Calculation = xlAutomatic
End Sub
csdl mà 1 trieu dòng...nhiều thật đó!Chào GPE ! Tồi cần viết 1 đoạn code để nối kết quả cột A và cột B cho ra cột C ( khoảng 1 triệu dòng ). Nhờ anh chỉ diễn đàn giúp đỡ. Xin cảm ơn
View attachment 283901
Option Explicit
Sub NOICOT()
Dim t
t = Timer
With Columns(3)
.Value = Evaluate("=A:A & "" # "" & B:B")
.AutoFilter
.AutoFilter Field:=1, Criteria1:="#"
Rows("2:1048576").Delete Shift:=xlUp
.AutoFilter
End With
MsgBox Timer - t
End Sub