Nhờ các anh chị giúp em code cập nhật dữ liệu nhưng thực hiện trên sheet với ạ
Nội dung câu hỏi em soạn trong file luôn. cảm ơn anh chị trên diễn đàn.
Nhìn file chẳng hiểu tí nào, sheet1 bạn nên cho kết quả sau khi copy từ sheet2 qua nhé.
.Em gửi lại file với nội dung em hỏi cụ thể hơn mong anh chị trên diễn đàn giúp em với. ví dụ như sheet2 nó tương tự như một phiếu thu khi bấm nút button1 thì toàn bộ nội dung được ghi vào sheet1 là bảng tổng hợp.
Option Explicit
Sub gpe()
Dim Sh As Worksheet
Dim lRw As Long, jJ As Byte
Dim StrC As String, sNum As String
Set Sh = ThisWorkbook.Worksheets("Sheet1")
lRw = Sh.[e65500].End(xlUp).Row
1 '.Xu Lí Só Fiéu:'
StrC = Sh.[b65500].End(xlUp).Value
For jJ = 1 To Len(StrC)
If Asc(Mid(StrC, jJ, 1)) > 64 Then
Else
sNum = Mid(StrC, jJ, 9): Exit For
End If
Next jJ
sNum = Left(StrC, jJ - 1) & Right("00" & CStr(CLng(sNum) + 1), 3)
2 '.Copy:'
With [B8].CurrentRegion
.Offset(1, 1).Copy Destination:=Sh.Cells(lRw, "E")
[a8].Resize(.Rows.Count).Copy Destination:=Sh.Cells(lRw, "A")
Sh.Cells(lRw, "B").Value = sNum
Sh.Cells(lRw, "C").Value = Date
End With
End Sub
Thêm 1 tham khảo cho bạn:
PHP:Option Explicit Sub gpe() Dim Sh As Worksheet Dim lRw As Long, jJ As Byte Dim StrC As String, sNum As String Set Sh = ThisWorkbook.Worksheets("Sheet1") lRw = Sh.[e65500].End(xlUp).Row 1 '.Xu Lí Só Fiéu:' StrC = Sh.[b65500].End(xlUp).Value For jJ = 1 To Len(StrC) If Asc(Mid(StrC, jJ, 1)) > 64 Then Else sNum = Mid(StrC, jJ, 9): Exit For End If Next jJ sNum = Left(StrC, jJ - 1) & Right("00" & CStr(CLng(sNum) + 1), 3) 2 '.Copy:' With [B8].CurrentRegion .Offset(1, 1).Copy Destination:=Sh.Cells(lRw, "E") [a8].Resize(.Rows.Count).Copy Destination:=Sh.Cells(lRw, "A") Sh.Cells(lRw, "B").Value = sNum Sh.Cells(lRw, "C").Value = Date End With End Sub
(3) Nếu em muốn điền 1 dãy số tại cột B sheet1 (em gửi file kèm để minh hoạ);
(2) và khi xoá hết dữ liệu mà nhấn nút thì nó mặc định là số đầu tiên chứ giờ em xoá hết nội dung của sheet1 thì khi bấm nút nó báo lỗi.
(1) và có thể giải thích giúp em dòng lệnh từ xử lý số liệu và copy không ạ, em dùng F8 để debug nhưng vẫn chưa hiểu lắm.
Option Explicit
Sub gpe()
Dim Sh As Worksheet
Dim lRw As Long, jJ As Byte
Dim StrC As String, sNum As String
Set Sh = ThisWorkbook.Worksheets("Sheet1")
lRw = Sh.[e65500].End(xlUp).Row
1 '.Xu Lí Só Fiéu:'
10 StrC = Sh.[b65500].End(xlUp).Value
11 For jJ = 1 To Len(StrC)
12 If Asc(Mid(StrC, jJ, 1)) > 64 Then
13 Else
14 sNum = Mid(StrC, jJ, 9): Exit For
15 End If
16 Next jJ
17 sNum = Left(StrC, jJ - 1) & Right("00" & CStr(CLng(sNum) + 1), 3)
2 '.Copy:'
With [B8].CurrentRegion
.Offset(1, 1).Copy Destination:=Sh.Cells(lRw, "E")
[a8].Resize(.Rows.Count).Copy Destination:=Sh.Cells(lRw, "A")
23 Sh.Cells(lRw, "B").Value = sNum
Sh.Cells(lRw, "C").Value = Date
End With
End Sub
PHP:D10: Lấy dữ liệu của ô cuối thuộc cột [B] gán vô biến StrC đã khai báo; D11: Lập vòng lặp duyệt từ đầu đến hết chiều dài của biến này; (Vòng lặp kết thúc tại D16) D12: Điều kiện, nếu khi duyệt ta gặp kí tự thì (không làm gì cả) D13: Bằng không thỏa điều kiện (Nghĩa là gặp kí số) thì thực hiện các lệnh trong D14 D14: D14A: Cắt lấy fần sau kí tự cuối cùng (đến hết mả fiếu) gán vô biến kiều chuỗi sNum S14B: Thoát vòng lặp D15: Kết thúc điều kiện D17: Cải biến biến sNum từ biến sNum bằng cách: Chuyển sNum thành kiểu dữ liệu số & cộng thêm 1, sau đó chuyển ngược lại thành chuỗi 3 ký số & gắn thêm tiếp fần ký tự (đầu fiếu) (2) Bạn làm kiểu này để lừa máy tính: Thêm 1 dòng giữa fần tiêu đề (dòng 10) & fần dữ liệu bên dưới Sau đó nhập vô các ô [B11:E11] trị mã đầu số fiếu, như "AC000" Cuối cùng cho dòng mới thêm này biến khỏi người trần mắt thịt (ẩn đi); (3) Bạn nghiên cứu & tự sửa D23 xem sao & chúc thành công![/QUOTE] Mình thử làm các nội dung như sau nhưng khi thực hiện nó báo lỗi Type mismatch Thêm 1 dòng giữa fần tiêu đề (dòng 10) & fần dữ liệu bên dưới Sau đó nhập vô các ô [B11:E11] trị mã đầu số fiếu, như "AC000" Cuối cùng cho dòng mới thêm này biến khỏi người trần mắt thịt (ẩn đi); Còn tự sửa D23 thì mình chưa làm được vì mình đang tự học, tự mày mò vba excel
[thongbao]em muốn hỏi thêm anh chị một xíu nữa nha, tại sheet2 nội dung không nằm theo thứ tự mà nằm rải rác em ví dụ như khi chèn thêm các cột vào giữa từng cột nội dung thì khi điền nội vào sheet1 code sẽ thay đổi thế nào ạ?[/thongbao]
Thì tạo vòng lặp duyệt tên trường trên dòng 7 của trang 'Sh2', khi nào trùng với tên trường thuộc dòng 10 trang 'Sh1' thì chép vô như trường 'STT' vậy!
Em không rõ lắm anh chị giúp em với, trường hợp nếu nội dung của sheet1 giữa các cột ta chèn thêm cột khác vào thì code điền nó có giống trên không ạ? em gửi file lên lại nhờ các anh chị giúp em với, em cảm ơn nhiều
Thứ tự các trường có thể lộn tùng fèo nhưng tên trường giữa 2 trang tính cần thiết fải như nhau;
Bạn nên đưa lại file khác nghiêm chỉnh hơn!
em đang học vba nếu anh chị nào tốt bụng giúp em giải thích sơ qua đoạn code với, em cảm ơn!em gửi file cụ thể hơn nhờ các anh chị giúp em với nha.
. . Nếu anh chị nào tốt bụng giúp em giải thích sơ qua đoạn code với, em cảm ơn!
Option Explicit
Private Sub Cmd_nhap_Click()
Dim Sh As Worksheet
Dim lRw As Long, rNum As Byte
Set Sh = ThisWorkbook.Worksheets("Tong hop")
1 'Xác Dinh Dòng Cuói Chúa Du Lieu Cua Trang Sh:'
lRw = Sh.[e65500].End(xlUp).Row + 1
2 'Xác Dinh So Dong Cua Hóa Don:'
rNum = [G23].End(xlUp).Row - 13
With Sh.Cells(lRw, "G")
.Value = [G23].Value 'Tong Tièn'
.Offset(, -1).Value = [A14].Value 'Noi Dung TH'
.Offset(, -2).Resize(rNum).Value = Date 'Ngày TH'
.Offset(, -3).Resize(rNum).Value = [I4].Value 'Só Hóa Don'
.Offset(, -5).Resize(rNum).Value = [I6].Value 'Ngày Nhap'
.Offset(, 1).Resize(rNum, 2).Value = [J14].Resize(rNum, 2).Value 'No - Có'
.Offset(, 3).Resize(rNum).Value = [c14].Resize(rNum).Value 'Ma DK'
.Offset(, 4).Resize(rNum).Value = [P14].Resize(rNum).Value 'Ma DK Chung'
.Offset(, 5).Resize(rNum).Value = [A14].Resize(rNum).Value 'Noi Dung Chi Tiét'
.Offset(, 6).Resize(rNum).Value = [G14].Resize(rNum).Value 'Só Tièn'
.Offset(, 7).Resize(rNum, 2).Value = [e14].Resize(rNum, 2).Value 'Ma Ngành-CM'
.Offset(, 9).Resize(rNum, 4).Value = [l14].Resize(rNum, 4).Value '4 Cuói'
End With
End Sub
<BR><BR>Em cảm ơn các pác nhiều hòan toàn những công việc đều đúng ý của em mà từ đây em học hỏi từ các anh chị nhiều. một lần nữa cảm ơn mọi người đã giúp đỡPHP:Option Explicit<BR>Private Sub Cmd_nhap_Click()<BR> Dim Sh As Worksheet<BR> Dim lRw As Long, rNum As Byte<BR> <BR> Set Sh = ThisWorkbook.Worksheets("Tong hop")<BR>1 'Xác Dinh Dòng Cuói Chúa Du Lieu Cua Trang Sh:'<BR> lRw = Sh.[e65500].End(xlUp).Row + 1<BR>2 'Xác Dinh So Dong Cua Hóa Don:'<BR> rNum = [G23].End(xlUp).Row - 13<BR> With Sh.Cells(lRw, "G")<BR> .Value = [G23].Value 'Tong Tièn'<BR> .Offset(, -1).Value = [A14].Value 'Noi Dung TH'<BR> .Offset(, -2).Resize(rNum).Value = Date 'Ngày TH'<BR> .Offset(, -3).Resize(rNum).Value = [I4].Value 'Só Hóa Don'<BR> .Offset(, -5).Resize(rNum).Value = [I6].Value 'Ngày Nhap'<BR> .Offset(, 1).Resize(rNum, 2).Value = [J14].Resize(rNum, 2).Value 'No - Có'<BR> .Offset(, 3).Resize(rNum).Value = [c14].Resize(rNum).Value 'Ma DK'<BR> .Offset(, 4).Resize(rNum).Value = [P14].Resize(rNum).Value 'Ma DK Chung'<BR> .Offset(, 5).Resize(rNum).Value = [A14].Resize(rNum).Value 'Noi Dung Chi Tiét'<BR> .Offset(, 6).Resize(rNum).Value = [G14].Resize(rNum).Value 'Só Tièn'<BR> .Offset(, 7).Resize(rNum, 2).Value = [e14].Resize(rNum, 2).Value 'Ma Ngành-CM'<BR> .Offset(, 9).Resize(rNum, 4).Value = [l14].Resize(rNum, 4).Value '4 Cuói'<BR> End With<BR>End Sub<BR>