Dạ cảm ơn Chú, nhưng sao giá trị cột G, H, I không copy tương ứng qua sheet2 luôn vậy Chú? File yêu cầu cháu để trống cho rõ ý chính.Kiểm tra lại kết quả coi sao nhé.
Dạ cảm ơn Chú, nhưng sao giá trị cột G, H, I không copy tương ứng qua sheet2 luôn vậy Chú? File yêu cầu cháu để trống cho rõ ý chính.
Public Sub GPE()
Dim Dic As Object, sArr(), dArr(), Txt As String
Dim I As Long, J As Long, K As Long, Rws As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
sArr = .Range("A4", .Range("A4").End(xlDown)).Resize(, 11).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 11)
K = -2
For I = 1 To UBound(sArr, 1)
Txt = sArr(I, 1) & sArr(I, 2) & "#" & sArr(I, 3) & "#" & sArr(I, 5)
If Not Dic.Exists(Txt) Then
K = K + 3
Dic.Add Txt, K
For J = 1 To 3
dArr(K, J) = sArr(I, J)
dArr(K + 1, J) = sArr(I, J)
dArr(K + 2, J) = sArr(I, J)
Next J
End If
Rws = Dic.Item(Txt)
If Abs(sArr(I, 6)) > dArr(Rws, 6) Then
For J = 4 To 11
dArr(Rws, J) = Abs(sArr(I, J))
Next J
End If
If Abs(sArr(I, 10)) > dArr(Rws + 1, 10) Then
For J = 4 To 11
dArr(Rws + 1, J) = Abs(sArr(I, J))
Next J
End If
If Abs(sArr(I, 11)) > dArr(Rws + 2, 11) Then
For J = 4 To 11
dArr(Rws + 2, J) = Abs(sArr(I, J))
Next J
End If
Next I
With Sheet2
.Range("A4:K1000").ClearContents
.Range("A4:K4").Resize(K + 2) = dArr
End With
Set Dic = Nothing
End Sub
Em đã thay Sub này nhưng code không chạy Chú ơi? Cảm ơn Chú nhiều.Ai biết đâu, thấy trống rỗng thì lấy qua làm gì, lúc đầu tôi lấy tất thì ra toàn các số 0 nhìn rối mắt nên bỏ qua.
Thay Sub cũ bằng cái này thử xem:
PHP:Public Sub GPE() Dim Dic As Object, sArr(), dArr(), Txt As String Dim I As Long, J As Long, K As Long, Rws As Long Set Dic = CreateObject("Scripting.Dictionary") With Sheet1 sArr = .Range("A4", .Range("A4").End(xlDown)).Resize(, 11).Value End With ReDim dArr(1 To UBound(sArr, 1), 1 To 11) K = -2 For I = 1 To UBound(sArr, 1) Txt = sArr(I, 1) & sArr(I, 2) & "#" & sArr(I, 3) & "#" & sArr(I, 5) If Not Dic.Exists(Txt) Then K = K + 3 Dic.Add Txt, K For J = 1 To 3 dArr(K, J) = sArr(I, J) dArr(K + 1, J) = sArr(I, J) dArr(K + 2, J) = sArr(I, J) Next J End If Rws = Dic.Item(Txt) If Abs(sArr(I, 6)) > dArr(Rws, 6) Then For J = 4 To 11 dArr(Rws, J) = Abs(sArr(I, J)) Next J End If If Abs(sArr(I, 10)) > dArr(Rws + 1, 10) Then For J = 4 To 11 dArr(Rws + 1, J) = Abs(sArr(I, J)) Next J End If If Abs(sArr(I, 11)) > dArr(Rws + 2, 11) Then For J = 4 To 11 dArr(Rws + 2, J) = Abs(sArr(I, J)) Next J End If Next I With Sheet2 .Range("A4:K1000").ClearContents .Range("A4:K4").Resize(K + 2) = dArr End With Set Dic = Nothing End Sub
Em đã thay Sub này nhưng code không chạy Chú ơi? Cảm ơn Chú nhiều.
Dạ cháu xin lỗi do đưa dữ liệu không rõ ràng. Cột D là dữ liệu vừa text và số, giống như file đính kèm cháu đã gửi, chẳng hạn như Comb1...Dữ liệu cột F, K có số âm, số dương khi đưa qua sheet2 chuyển thành số dương bằng trị tuyệt đối. Thành thật xin lỗi chú lần nữa. Cảm ơn chú rất nhiều.Dữ liệu trước sau bất nhất, cột D lúc đầu là Number, sao bây giờ là Text?, Nhìn vào kiểu dữ liệu để viết, đâu phải "tính toán" cho chuỗi Text được.
Bây giờ bạn đưa file này lên, dữ liệu không hoàn toàn giống những file trước, các cột từ F đến K đếu có số âm, dương. Tất cả các cột này đều chuyển thành số dương bằng trị tuyệt đối hay sao?
Ví dụ: cột F, lấy trị tuyệt đối lớn nhất, còn các cột khác giữ nguyên số liệu ?
....................
Dạ cháu xin lỗi do đưa dữ liệu không rõ ràng. Cột D là dữ liệu vừa text và số, giống như file đính kèm cháu đã gửi, chẳng hạn như Comb1...Dữ liệu cột F, K có số âm, số dương khi đưa qua sheet2 chuyển thành số dương bằng trị tuyệt đối. Thành thật xin lỗi chú lần nữa. Cảm ơn chú rất nhiều.
Dạ không cột D không cần ABS, chỉ đưa giá trị cột D tương ứng giá trị cột khác qua sheet2 luôn Chú ơi.Vậy thì xem lại file này, từ cột F đến K đều là ABS(số)
File trước cột D là số, bây giờ là Text nên lỗi ABS(Text).
Dạ không cột D không cần ABS, chỉ đưa giá trị cột D tương ứng giá trị cột khác qua sheet2 luôn Chú ơi.
Dạ ok rồi Chú, để cháu sử dụng nếu có lỗi thì cháu sẽ phiền chú. Cảm ơn Chú nhiều.Bạn đã xem file bài #8 chưa vậy?
Cột D bạn là Text thì làm gì ABS() được. Tôi nói là "trước đây" kìa, từ fle trước (Bài #3) bạn nhập "thí thí" cho nó là số, đến bài #5 bạn đưa file là Text nên lỗi, tôi đã chỉnh lại trong file bài #8 rồi đó. Nếu không đúng thì bạn nói rõ lại yêu cầu.