Chuyển dữ liệu từ cột qua dòng...có bước nhảy khác nhau (1 người xem)

  • Thread starter Thread starter phamsu
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

phamsu

Thành viên mới
Tham gia
2/1/11
Bài viết
9
Được thích
0
Chào các anh!
Em mới tập tành viết code...nhưng mà bí quá. E muốn các anh giúp e code chuyến dữ liệu từ cột trong sheet 1 (step là 1) sang dòng trong sheet 2 (step là 4) nhưng mà không tài nào chuyển được. Mong các anh giúp đỡ. Em cảm ơn nhiều ah. Các anh xem file đính kèm giúp em nhé (e có viết trong đó nhưng không biết sai thế nào).
 

File đính kèm

Chào các anh!
Em mới tập tành viết code...nhưng mà bí quá. E muốn các anh giúp e code chuyến dữ liệu từ cột trong sheet 1 (step là 1) sang dòng trong sheet 2 (step là 4) nhưng mà không tài nào chuyển được. Mong các anh giúp đỡ. Em cảm ơn nhiều ah. Các anh xem file đính kèm giúp em nhé (e có viết trong đó nhưng không biết sai thế nào).

Vầy chắc được:
Mã:
Sub nghich()
  Dim aTemp, Item, Ret As Double, Arr()
  Dim n As Long, i As Long
  aTemp = Sheet1.Range("B1:B1000").Value
  For Each Item In aTemp
    On Error Resume Next
    Ret = CDbl(Item)
    On Error GoTo 0
    If Ret > 0 Then
      n = i * 4 + 1
      ReDim Preserve Arr(1 To n)
      Arr(n) = Ret
      i = i + 1
    End If
  Next
  If n Then Sheet2.Range("F5").Resize(1, n).Value = Arr
End Sub
 
Upvote 0
Chào các anh!
Em mới tập tành viết code...nhưng mà bí quá. E muốn các anh giúp e code chuyến dữ liệu từ cột trong sheet 1 (step là 1) sang dòng trong sheet 2 (step là 4) nhưng mà không tài nào chuyển được. Mong các anh giúp đỡ. Em cảm ơn nhiều ah. Các anh xem file đính kèm giúp em nhé (e có viết trong đó nhưng không biết sai thế nào).
Tôi thấy 2 vòng For lồng vào nhau có vẻ không ổn.
Bạn thử code sau xem sao:
[GPECODE=vb]Sub Test()
Dim Cll As Range, i As Long
i = 2
For Each Cll In Sheet1.[B6].CurrentRegion
i = i + 4
Sheet2.Cells(7, i) = Cll
Next
End Sub[/GPECODE]
 
Upvote 0
Bác ndu ơi....bác test thử chưa đó. Sao e ko thấy nó nhúc nhích j cả ấy ah. Chẳng điền vào đâu cả. Đứng đơ đơ lun ạ. Bác xem giúp em cái.
 
Upvote 0
Tks bác nghiaphuc. Em thấy chạy được zùi. Chỉ mỗi cái là em chưa hiểu là 2 vòng của e có vấn đề j mà bị vậy ạ? Nếu bên sheet2 là liên tiếp nhau thì e có thể làm được theo vòng đó...nhưng tại sao cách 4 ra lại bị vậy ah?
 
Upvote 0
Bác ndu ơi....bác test thử chưa đó. Sao e ko thấy nó nhúc nhích j cả ấy ah. Chẳng điền vào đâu cả. Đứng đơ đơ lun ạ. Bác xem giúp em cái.

Đơ là đơ thế nào?
Bạn xóa hết đống rác bên sheet2 đi, xong chạy code sẽ thấy liền
------------
Code tôi viết cho bạn là xử lý trên mảng, bạn sẽ yên tâm về tốc độ nhé
Còn code của Nghĩa Phúc cũng chưa chắc đúng đâu, ít nhất sẽ tèo khi dữ liệu có dòng rổng (hoặc bên cạnh cột B của Sheet1 có dữ liệu thì code sẽ lấy tùm lum luôn)
 
Lần chỉnh sửa cuối:
Upvote 0
Ah ah. E thấy zui. Khi nãy e cứ nhìn vào rows 7...mà bác cho nó chạy ở rows 5. Tks bác nha. Trưa zui mà làm các bác vất vả quá.
-----------------------------------
Code bác chạy nhanh....mỗi tội em gà nên chẳng hiểu được mấy. :(
 
Upvote 0
Bác Ndu ơi.....dữ liệu ở cột B bên sheet 1 có thể là số hoặc chữ. bác viết là cho số...vậy nếu là chữ thì e phải sửa chỗ nào nữa ah?
 
Upvote 0
Bác Ndu ơi.....dữ liệu ở cột B bên sheet 1 có thể là số hoặc chữ. bác viết là cho số...vậy nếu là chữ thì e phải sửa chỗ nào nữa ah?

Tức là lấy tất tần tật, đúng không?
Thế thì sửa thành vầy:
Mã:
Sub nghich()
  Dim aTemp, Item, [COLOR=#ff0000]Ret[/COLOR], Arr()
  Dim n As Long, i As Long
  On Error Resume Next
  aTemp = Sheet1.Range("[COLOR=#ff0000]B6:B1000[/COLOR]").Value
  For Each Item In aTemp
    [COLOR=#ff0000]Ret = CStr(Item)[/COLOR]
    [COLOR=#ff0000]If Len(Ret) Then[/COLOR]
      n = i * 4 + 1
      ReDim Preserve Arr(1 To n)
      Arr(n) = Ret
      i = i + 1
    End If
  Next
  If n Then Sheet2.Range("[COLOR=#ff0000]F7[/COLOR]").Resize(1, n).Value = Arr
End Sub
Những chổ màu đỏ là những chổ sửa lại
 
Upvote 0
Bác ndu ơi...cho em hỏi thêm cái nữa. Vẫn là book đó, nhưng bjo em muốn thế này:
- Bên sheet 1 sẽ được sắp xếp từ A=>Z
- Bên sheet 2 vẫn sẽ điền vào như vậy nhưng khi sheet 1 có sự thay đổi dữ liệu (ví dụ: dữ liệu bên sheet 1 là: 1,2 3,5,7 và chạy code kia thì bên sheet 2 sẽ tương ứng là 1,2,3,5,7.Tuy nhiên bjo thêm 4 và 6 vào thì bên thì sheet 2 sẽ insert thêm 4 và 6 ở phía sau 3 và 5 (bên này cũng theo thứ tự A=>Z mà)...

Lý do: Bởi vì phía dưới những ô điền dữ liệu đó có những dữ liệu em điền vào zùi...nếu như thay thế thì sẽ lệch hết dữ liệu nên mới phải insert.
Mong bác hay các bác nào đọc được thì giúp em. Em cảm ơn nhiều ạ.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom