hungpecc1
Thành viên gắn bó
- Tham gia
- 24/8/12
- Bài viết
- 1,709
- Được thích
- 2,304
- Giới tính
- Nam
Tôi có bảng dữ liệu ở sheet1 (STT, Ten, SL, TenWB, TenSheet), do số thứ tự của sheet1 không đồng nhất nên phải đáng STT lại.
Vậy xin hỏi là câu lệnh truy vấn như thế nào sẽ cho ra cột STT đánh theo nhóm (Dựa vào cột TenWB). Kết quả ra ở Sheet2.
Xin cảm ơn.
Em cũng vọc từ hôm qua, nhưng mà so với kết quả ở sheet2 của anh thì khác --> nên chắc là không đúng đáp án , nhưng mà đã mất công viết thì cứ post lên thôi
* Cách của bạn Dn46 nhìn tuy gọn , nhưng mà theo em tốc độ code cũng tương đương với cách dùng vòng lặp của em ( do có các câu lệnh select lồng vào nhau )
cụ thể :
[GPECODE=vb]
Sub HLMT()
Dim cnn As Object, rstWB As Object, rstTT As Object
Dim SQL$, i&
Set cnn = CreateObject("ADODB.Connection")
Set rstWB = CreateObject("ADODB.Recordset"): Set rstTT = CreateObject("ADODB.Recordset")
With cnn
.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;" & _
"Data source=" & ThisWorkbook.FullName & _
";Extended properties=""excel 8.0;HDR=Yes;IMEX=2"";"
.Open
End With
rstWB.Open "SELECT TenWB FROM [A:E] GROUP BY TenWB", cnn, 3, 1, 1
With rstWB
If .RecordCount > 0 Then
.MoveFirst
While Not .EOF
If Len(rstWB!TenWB) Then
SQL = "SELECT * FROM [A:E] WHERE TenWB='" & rstWB!TenWB & "'"
rstTT.Open SQL, cnn, adOpenStatic, adLockOptimistic, 1
With rstTT
.MoveFirst
i = 1
While Not .EOF
rstTT!STT = i
.MoveNext
i = i + 1
Wend
.Close
End With
End If
.MoveNext
Wend
End If
End With
Set rstTT = Nothing
rstWB.Close: Set rstWB = Nothing
cnn.Close: Set cnn = Nothing
End Sub
[/GPECODE]
^^ code này em sắp xếp trực tiếp trên sheet1 luôn, còn nếu muốn copy từ sheet1 sang sheet2 thì thêm 1 câu lệnh phụ copy nữa !
Lần chỉnh sửa cuối: