Chèn dòng trong Excel theo dữ liệu cho trước

  • Thread starter nguyenthanhhai
  • Ngày gửi
N

nguyenthanhhai

Sơ cấp
12/10/05
2
0
0
39
Hungary, Budapest
#1
Chào các bác,
Tôi đang thử làm dữ liệu cho cty, có 1 bài toán sau, không biết làm thế nào.

Trong Sheet1

ItemNo Piece
AAA 3
BB 2
...

Tôi muốn là ở Sheet2 sẽ có được dữ liệu thế này:
ItemNo Piece
AAA 1
AAA 1
AAA 1
BB 1
BB 1

Bác nào đã gặp qua bài toán này xin chỉ giúp!

Hải
 
W

workman

Cao cấp
22/7/05
372
0
0
46
Ho Chi Minh
#2
nguyenthanhhai nói:
Chào các bác,
Tôi đang thử làm dữ liệu cho cty, có 1 bài toán sau, không biết làm thế nào.

Trong Sheet1

ItemNo Piece
AAA 3
BB 2
...

Tôi muốn là ở Sheet2 sẽ có được dữ liệu thế này:
ItemNo Piece
AAA 1
AAA 1
AAA 1
BB 1
BB 1

Bác nào đã gặp qua bài toán này xin chỉ giúp!

Hải
Hừ hừ,

Nếu yêu cầu của bạn là đi từ sheet2 sang sheet1 thì dễ hơn, không cần phải lập trình. CÒn yêu cầu của bạn thì chỉ có thể làm được bằng VBA. Làm tạm như thế này nhé:

sub phanchiasheet()

Dim i, j

i = 2

Sheets("sheet2").Activate
Range("A2").Select

Do While Sheets("sheet1").Range("A" + CStr(i)) <> ""
If Sheets("sheet1").Range("B" + CStr(i)) >= 1 Then
For j = 1 To Sheets("sheet1").Range("B" + CStr(i))
ActiveCell.Formula = Sheets("sheet1").Cells(i, 1)
ActiveCell.Offset(0, 1).Formula = 1
ActiveCell.Offset(1, 0).Select
Next j
Else
ActiveCell.Offset(1, 0).Select
End If
i = i + 1
Loop

End Sub

Thú thực tôi chưa gặp phải bài toán này bao giờ. Ý tưởng hơi lạ và tôi cũng không hiểu rõ mục đích của bạn dùng thuật toán này để làm gì.
 
adam_tran

adam_tran

Steel Partner
17/5/05
1,373
32
48
41
Goooogle
#3
Có nghĩa là bài toán đi từ số tổng hợp sang số chi tiết, có thể ứng dụng để làm phiếu lương, phiếu quà tặng, phiếu nhập xuất... chẳng hạn. Với yêu cầu đơn giản như trên thì dùng VBA rất tiện, anh Workman đã đưa ra giải thuật rồi đấy.
Nếu không dùng VBA thì có thể dùng Vlookup, match và Index như file đính kèm... có điều rối rắm!
 

Đính kèm

N

nguyenthanhhai

Sơ cấp
12/10/05
2
0
0
39
Hungary, Budapest
#4
Cảm ơn các bác,

Tôi dùng các này để in mấy cái label. Vaasn ddeef là dữ liệu mình nhận được ở dạng tổng hợp, trong khi chương trình in label thì chỉ nhận database theo dữ liệu từng dòng nên mới phải nghĩ cách chia ra như vậy.

Tôi đã dùng được cái script VBA, cảm ơn bác nhiều.

Hải
 
Sửa lần cuối:
adam_tran

adam_tran

Steel Partner
17/5/05
1,373
32
48
41
Goooogle
#6
ForestC nói:
Tôi thấy rằng cả 2 giải pháp mà anh Workman và anh Adam đưa ra đều tuyệt vời. Cách anh Adam dùng hàm tuy có phức tạp 1 chút (như lời anh nói) nhưng cũng rất ấn tượng!
Ặc, phức tạp với người chưa sử dụng Excel nhiều, chứ cỡ MaiKa thì ... chuyện nhỏ.
Tớ vẫn prefer VBA hơn, trong trường hợp này dùng VBA vẫn gọn hơn! Công thức đưa ra xem như một ví dụ ứng dụng (trong rất nhiều ứng dụng kết hợp) của các hàm Lookup and Reference. Vấn đề này chị handung107 là số 1! Các bạn nên tìm và đọc thật kỹ bài viết về các ứng dụng thực tế của các hàm trên và cách sử dụng Name của chị handung107! Trên cả tuyệt vời!:biggrin:
 
T

truongcmu

Sơ cấp
13/9/10
2
0
0
30
Cà Mau
#7
Sao khi kéo xuống chỉ được một tí là hết tác dụng vậy SẾP?
 
T

truongcmu

Sơ cấp
13/9/10
2
0
0
30
Cà Mau
#8
Help me!
Trong file gửi kèm, tôi muốn chúng lặp lại như 3 dòng đầu mà không biết phải làm sao? Giúp tôi với!
 

Đính kèm

  • 30.5 KB Lượt xem: 133
S

SA_DQ

Thành viên thân thiết
29/6/05
435
38
28
61
HCM city
#9
Dùng macro & chèn từ tận cùng trở lên

Mã:
Option Explicit
[B]Sub Them3Dòng()[/B]
 Dim Cls  As Range, Rws As Long, Ma As String, Jj As Byte, Lan As Byte
 
 Set Cls = [a65500].End(xlUp):                        Rws = Cls.Row - 1
 Application.ScreenUpdating = False
 Do
   
   Ma = Cls.Value
   Cls.Resize(2).EntireRow.Insert
   Cells(Rws + 1, "A").Resize(3).Value = Ma
   For Jj = 1 To 3
      Cells(Rws + Jj, "B").Value = Ma & CStr(Jj)
   Next Jj
   Set Cls = Cells(Rws, "A"):                         Rws = Cls.Row - 1
GPE:   If Rws < 9 Then Exit Do  '<=|'
 Loop
[B]End Sub[/B]
Lưu í: Mình chỉ cho chèn đến dòng 10; các dòng trên nó bạn đã chèn

Hãy xem trong file kèm theo
 

Đính kèm

Thành viên trực tuyến

  • Vincent_Han
  • auyeuch
  • daongocnam0603
  • banthogo
  • thoibimat




Xem nhiều