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

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi nguyenthanhhai, 9 Tháng mười một 2005.

4,168 lượt xem

  1. nguyenthanhhai

    nguyenthanhhai Thành viên sơ cấp

    Bài viết:
    2
    Đã được thích:
    0
    Nơi ở:
    Hungary, Budapest
    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
     
    #1
  2. workman

    workman Thành viên hoạt động

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    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ì.
     
    #2
  3. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    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!
     

    Các file đính kèm:

    • Adam.rar
      Kích thước:
      1.8 KB
      Đọc:
      181
    #3
  4. nguyenthanhhai

    nguyenthanhhai Thành viên sơ cấp

    Bài viết:
    2
    Đã được thích:
    0
    Nơi ở:
    Hungary, Budapest
    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
     
    Last edited: 9 Tháng mười một 2005
    #4
  5. ForestC

    ForestC Thành viên hoạt động

    Bài viết:
    377
    Đã được thích:
    1
    Nơi ở:
    E'rywhere
    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!
     
    #5
  6. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    Ặ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:
     
    #6
  7. truongcmu

    truongcmu Thành viên sơ cấp

    Bài viết:
    2
    Đã được thích:
    0
    Nơi ở:
    Cà Mau
    Sao khi kéo xuống chỉ được một tí là hết tác dụng vậy SẾP?
     
    #7
  8. truongcmu

    truongcmu Thành viên sơ cấp

    Bài viết:
    2
    Đã được thích:
    0
    Nơi ở:
    Cà Mau
    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!
     

    Các file đính kèm:

    • TD.xls
      Kích thước:
      30.5 KB
      Đọc:
      131
    #8
  9. SA_DQ

    SA_DQ Thành viên thân thiết

    Bài viết:
    431
    Đã được thích:
    37
    Nơi ở:
    HCM city
    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
     

    Các file đính kèm:

    • GPEf.rar
      Kích thước:
      21.5 KB
      Đọc:
      117
    #9

Chia sẻ trang này