chutuoc909
Thành viên chính thức


- Tham gia
- 14/7/15
- Bài viết
- 51
- Được thích
- 2
Tuyệt vời bạn HYen17,
Cám ơn bạn rất nhiều,
mình nhờ thêm 1 vấn đề nữa với:
Hiện tại dữ liệu đc lọc và copy như vậy là ok rồi, Giờ mình muốn khi copy bạn copy luôn ngày tháng tương ứng vào 1 cột bên cạnh được không? và hơi phức tạp 1 tí là định dạng ngày tháng là yyyymmdd (không có '/') vậy có được không nhỉ?
bạn có hiểu ý mình không?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KQ(1 To 6000, 1 To 5) As Variant, rng, Visiblecll, CLL As Range, j As Long, k
If Not Intersect(Target, [f2]) Is Nothing Then
Set rng = Range([f6], [f6].End(2))
k = Application.Match(Target, rng, 0)
If TypeName(k) <> "Error" Then
On Error GoTo thoat
Set Visiblecll = rng.Cells(1, k).Resize([a60000].End(3).Row - 5).SpecialCells(2)
If Err Then GoTo thoat
For Each CLL In Visiblecll
j = j + 1
KQ(j, 1) = j
KQ(j, 2) = CLL.Offset(, -k - 4).Value
KQ(j, 3) = CLL.Value
KQ(j, 4) = CLL.Offset(, -k - 3)
KQ(j, 5) = Format(rng.Cells(1, k), "yyyymmdd")
Next
End If
End If
thoat:
Sheet1.[a7:d6000].Clear
On Error GoTo 0
If j Then Sheet1.[a7].Resize(j, 5) = KQ
End Sub
Mình nhờ thêm 1 vấn đề nữa với:
Hiện giờ mình muốn khi copy bạn đem luôn ngày tháng tương ứng vào 1 cột bên cạnh được không? và định dạng ngày tháng là yyyymmdd (không có '/') vậy có được không nhỉ?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [f2]) Is Nothing Then
Dim Rng As Range, sRng As Range, Sh As Worksheet, Rg0 As Range, Cls As Range
Dim MyFormat As String
Dim Rws As Long
Set Sh = ThisWorkbook.Worksheets("Sheet1")
Sh.[b7].CurrentRegion.Offset(1, 1).ClearContents
Rws = [A6].CurrentRegion.Rows.Count
Set Rng = Range([f6], [f6].End(xlToRight))
MyFormat = Rng.NumberFormat
Rng.NumberFormat = "mm/dd/yyyy"
Set sRng = Rng.Find(Format(Target.Value, "MM/dd/yyyy"), , xlValues, xlWhole)
If sRng Is Nothing Then
MsgBox "Nothing", , "Tam Biet!"
Else
Set Rg0 = sRng.Offset(1).Resize(Rws).SpecialCells(xlCellTypeConstants, 1)
If Rg0 Is Nothing Then
MsgBox "Khong Só Lieu"
Else
For Each Cls In Rg0
With Sh.Cells(9 + Rws, "B").End(xlUp).Offset(1)
.Value = Cells(Cls.Row, "A").Value
.Offset(, 1).Value = Cls.Value
.Offset(, 2).Value = Format(Target.Value, "yyyymmdd") '<=|'
.Offset(, 3).Value = Cells(Cls.Row, "C").Value
End With
Next Cls
End If
End If
Rng.NumberFormat = MyFormat
Sh.Select
End If
End Sub
Bạn lấy macro này chép đè lên cái cũ nè:
PHP:Option Explicit Set Rg0 = sRng.Offset(1).Resize(Rws).SpecialCells(xlCellTypeConstants, 1) If Rg0 Is Nothing Then MsgBox "Khong Só Lieu"
cái này xóa hết số liệu của cột đó nó lỏio63i bác ơi
Là sao, bạn?
Fương thức đó là chọn ra những ô có số liệu trong cột mà bạn.
[COLOR=#000000][COLOR=#007700]If [/COLOR][COLOR=#0000BB]Rg0 Is Nothing Then
MsgBox [/COLOR][COLOR=#DD0000]"Khong Só Lieu"
chỉ có cách này mới có hi vọng nhìn thấy "Khong Só Lieu" hihià, là nếu như cột của ngày đó mà ko có số liệu, ví dụ như ngày 30 đi, mình xóa hết số liệu
nó báo là "no cell was found"
cái dòng lệnh dưới
Mã:[COLOR=#000000][COLOR=#007700]If [/COLOR][COLOR=#0000BB]Rg0 Is Nothing Then MsgBox [/COLOR][COLOR=#DD0000]"Khong Só Lieu" [/COLOR][/COLOR]
nó không phát huy tác dụng
On Error Resume Next
Set Rg0 = sRng.Offset(1).Resize(Rws).SpecialCells(xlCellTypeConstants, 1)
On Error GoTo 0
If Rg0 Is Nothing Then
MsgBox "Khong Só Lieu"
Else
mọi thứ điều ổn, nhưng mọi phát sinh thêm thì rất ngại viết lại bài?Dear các Bro,
Bài toán giờ thêm 1 ý nữa thế này ạ:
Hiện tại đang lọc những cột nào có dữ liệu thì mới in, nhưng bây giờ em muốn in cả những thằng ko có dữ liệu nhưng in no ra với dữ liệu =0
và chèn thêm 1 cột nữa trong sheet 1 là Create date(tức là ngày hiện tại). các bác xem có ổn không ?
mọi thứ điều ổn, nhưng mọi phát sinh thêm thì rất ngại viết lại bài?
Đồng ý với bác,
nhưng khổ nỗi ý tưởng của Sếp nó cứ xuất hiện liên tục, buộc mình phải theo.
nên mong được sự giúp đỡ của mọi người.![]()
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [f2]) Is Nothing Then
Dim Arr(), Rng As Range, Cls As Range
Dim Rws As Long, J As Long
Dim Ngay As String
With Target
Ngay = CStr(Year(.Value)) & Right("0" & CStr(Month(.Value)), 2) & Right("0" & CStr(Day(.Value)), 2)
End With
For Each Cls In Range([f6], [f6].End(xlToRight))
If Cls.Value = Target.Value Then Exit For
Next Cls
Rws = [A7].CurrentRegion.Rows.Count
Arr() = [A7].Resize(Rws, 3).Value
For J = 1 To UBound(Arr())
If Arr(J, 1) = "" Then Exit For
Arr(J, 2) = Cells(J + 6, Cls.Column).Value
Arr(J, 3) = Ngay
Next J
Sheet1.[b7].Resize(Rws, 3) = Arr()
Sheet1.Select
End If
End Sub
bạn đừng có "pro" "bro".....mấy vị ở đây dị ứng với nó lắm
chứ hiện này với ngày không có số liệu thì nó ra kết quả như thế nào?
Kiểu này thì thuật toán fải thay thôi,
Yêu cầu của chủ topic đã được đáp ứng; Giờ xin hỏi lại chủ topic 1 câu:
Sao ta không xoay trang dữ liệu lại nhỉ?
Lúc đó các dòng sẽ liệt kê ngày tháng nhập; còn các cột sẽ là những mặt hàng
[thongbao]ó 2 sheet:
ở cột A là các mã hàng,
Range (F:AJ) là dữ liệu
yêu cầu: tương ứng theo dữ liệu đã nhập ở ô F2 thì tìm kiếm trong Range,
theo trên ta nhập ngày là 2015/06/30 thì ở ô F6 ta tìm thấy nó, trong cột F tương ứng với ngày nhập đó ô nào có dữ liệu thì in ra, theo ví dụ : tại ô F31 và A31 có dữ liệ thì copy 2 ô đó sang sheet1. và tương ứng nếu ta nhập ngày tháng ban đầu là khác thì phai copy tương tự.[/thongbao]
trong sheet kết quả mẫu có cần liệt kê những mã số cột A mà có trong sheet1 nhưng không có trong sheet2 không ?
uhm bạn nói tôi hiểu chứ . để từ từ thì tôi còn sửa chứ vào spam hối thúc thì thông cảm tôi không thích bị ai hối thúc kiểu đó . nên bạn chờ các thành viên khác giúp nhé . chào bạn
Bạn nóng tính quá, sorry nếu làm bạn ức chế nhé. Cũng chỉ vì deadline căng quá nên hơi bối rối, sorry nhé.
Hình như bạn là Việt kiều, câu văn nửa nạc (Việt) nửa mỡ (hổng biết nước nào), GPE không thích đọc những câu văn kiểu này đâu, bạn chờ mõi cổ rồi.
Không ai giúp cũng có lý do "nhân quả".Forum lập ra là để là nơi trao đổi, học hỏi lẫn nhau. Nhờ giúp đỡ nhưng mà ko ai giúp thì mình phải chịu.
Buồn cười là do bạn tự "mắc cười" thôi, đa số thành viên GPE luôn dị ứng kiểu "nửa nạc nửa mỡ", có thể bạn chưa đọc được nhiều bài về chuyện này trên GPE thôi, một số thành viên chưa đọc kỹ bài viết kiểu "2 nạc 3 mỡ" nên viết bài trả lời, chỉ là "số ích".chứ bạn lấy lý do là nửa tây nửa ta GPE ko thích điều này thì mình thấy hơi buồn cười.
Đánh máy cho mình nhớ là một chuyện, cho người khác đọc là một chuyện.đánh máy hầu hết là theo thói quen thường ngày, đánh thế nào cho nhanh, cho tiện thì đánh.
Trong giao tiếp lịch sự giữa người Việt với người Việt, tôi luôn tôn trọng "sự trong sáng của tiếng Việt", Khi nói chuyện với người nước ngoài, tôi không bao giờ dùng "tay".trong cuộc sống bạn chưa bao giờ dùng từ sorry? khi nói chuyện với khách hàng, đồng nghiệp, và sếp bạn chưa từng dùng qua từ deadline?
Forum lập ra là để là nơi trao đổi, học hỏi lẫn nhau. Nhờ giúp đỡ nhưng mà ko ai giúp thì mình phải chịu.
chứ bạn lấy lý do là nửa tây nửa ta GPE ko thích điều này thì mình thấy hơi buồn cười.
đánh máy hầu hết là theo thói quen thường ngày, đánh thế nào cho nhanh, cho tiện thì đánh.
trong cuộc sống bạn chưa bao giờ dùng từ sorry? khi nói chuyện với khách hàng, đồng nghiệp, và sếp bạn chưa từng dùng qua từ deadline?![]()
chứ bạn lấy lý do là nửa tây nửa ta GPE ko thích điều này thì mình thấy hơi buồn cười.
Túm lại bạn phải giải thích lại cái file đính kèm đi..........chứ nói là copy qua. nhưng không biết copy những dòng nào? tiêu chí nào? xem sheet mẫu của bạn .......so sánh lại vói sheet gốc mà cũng không hình dung dc là bạn muốn gì...........
Có lẽ đã đúng cả 3 yêu cầu của bạn.Xin chào mọi người
Mình có 1 bài tập cần sự giúp đỡ.
chi tiết các bạn mở file xem hộ mình nhé.
![]()
Có lẽ đã đúng cả 3 yêu cầu của bạn.
Cho phép mình gác lại file trên nhé:
giờ mình phải làm trực tiếp trên file nguồn, nhưng không biết phải làm thế nào
chi tiếp cụ thể nhờ các bạn xem trong file đính kemd giúp mình với nhé.
Mong nhận được sự giúp đỡ của các Thầy và các bạn.
tại file > hơn 1M nên mình đã up lên mediafire:
http://www.mediafire.com/download/7r2xz7ry2ioq95l/Material.xlsx
cột F==>chỉ có "plan", ko có "stock"
cột E==> "assay"
cột D==> ">0"
[TABLE="width: 402"]
[TR]
[TD]SU8E-10W01AI-01X[/TD]
[TD="align: right"]2600[/TD]
[TD]Assy3[/TD]
[TD]Plan[/TD]
[TD="align: right"]1380[/TD]
[/TR]
[TR]
[TD]SU8E-10W05MI-01A[/TD]
[TD="align: right"]4500[/TD]
[TD]Assy3[/TD]
[TD]Plan[/TD]
[TD="align: right"]1300[/TD]
[/TR]
[TR]
[TD]SU8C-12H03AS-01X[/TD]
[TD="align: right"]2600[/TD]
[TD]Assy3[/TD]
[TD]Plan[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]SU8C-12H04AS-01X[/TD]
[TD="align: right"]400[/TD]
[TD]Assy3[/TD]
[TD]Plan[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]SU6C-12H12AS-01X[/TD]
[TD="align: right"]848[/TD]
[TD]Assy1[/TD]
[TD]Plan[/TD]
[TD="align: right"]0[/TD]
[/TR]
[TR]
[TD]SU8E-11H04MI-01A[/TD]
[TD="align: right"]6000[/TD]
[TD]Assy3[/TD]
[TD]Plan[/TD]
[TD][/TD]
[/TR]
[/TABLE]
Public Sub helloAtual()
Dim lr As Long, rngC As Range, lrSheet1 As Long
lr = Sheet8.UsedRange.SpecialCells(xlCellTypeLastCell).Row
With Sheet1
.[Z1].ClearContents
.[Z2].Value = "=AND(ATual!D9>0,ATual!E9=""Assy"",ATual!F9=""Stock"")"
Sheet8.Range("D8:F" & lr).AdvancedFilter xlFilterInPlace, .[Z1:Z2]
On Error Resume Next
Set rngC = Sheet8.Range("C9:C" & lr).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If rngC Is Nothing Then Exit Sub
lrSheet1 = WorksheetFunction.Max(.Range("C4").CurrentRegion.SpecialCells(xlCellTypeLastCell).Row, 5)
.Range("C5:H" & lrSheet1).ClearContents
rngC.Copy
.[C5].PasteSpecial xlPasteValues
Sheet8.Range("D9:D" & lr).SpecialCells(xlCellTypeVisible).Copy
.[F5].PasteSpecial xlPasteValues
lrSheet1 = .[F4].End(xlDown).Row
.Range("D5:D" & lrSheet1).Value = 1111000570
.Range("G5:G" & lrSheet1).Value = "CBU"
.Range("E5:E" & lrSheet1).Value = Format(Date, "yyyyMMdd")
.Range("H5:H" & lrSheet1).Value = Format(Date, "yyyyMMdd")
Sheet8.Range("D8:F" & lr).AutoFilter
.[Z2].ClearContents
End With
End Sub
Public Sub hello0915()
Dim lr As Long, rngC As Range, lrS2 As Long
lr = Sheet4.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Sheet4.Range("FJ7:FK" & lr).AutoFilter 2, ">0"
On Error Resume Next
Set rngC = Sheet4.Range("X8:X" & lr).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If rngC Is Nothing Then Exit Sub
With Sheet2
lrS2 = WorksheetFunction.Max(.Range("C4").CurrentRegion.SpecialCells(xlCellTypeLastCell).Row, 5)
.Range("C5:H" & lrS2).ClearContents
rngC.Copy
.[C5].PasteSpecial xlPasteValues
Sheet4.Range("FK8:FK" & lr).SpecialCells(xlCellTypeVisible).Copy
.[F5].PasteSpecial xlPasteValues
lrS2 = .[F4].End(xlDown).Row
.Range("D5:D" & lrS2).Value = 1111000570
.Range("G5:G" & lrS2).Value = "CBU"
.Range("E5:E" & lrS2).Value = Format(Date, "yyyyMMdd")
.Range("H5:H" & lrS2).Value = Format(Date, "yyyyMMdd")
Sheet4.Range("FJ7:FK" & lr).AutoFilter
End With
End Sub
Tuyệt thật,
Cám ơn bạn nhiều lắm.
doveandrose
có thể cho mình địa chỉ email hay cái gì đó liên lạc để nói chuyện được không?
mong muốn 3 chép vào workSheet nhaTuyệt thật,
Cám ơn bạn nhiều lắm.
doveandrose
có thể cho mình địa chỉ email hay cái gì đó liên lạc để nói chuyện được không?
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect([A1:A1], Target) Is Nothing Then
With UserForm1
.StartUpPosition = 0
.Top = [D18].Top - 50
.Left = [D18].Left + 20
.Show
End With
End If
End Sub
mong muốn 3 chép vào workSheet nha
Mã:Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect([A1:A1], Target) Is Nothing Then With UserForm1 .StartUpPosition = 0 .Top = [D18].Top - 50 .Left = [D18].Left + 20 .Show End With End If End Sub
chứ hiện tại bạn không liên lạc được với tôi ?
ngày nào tôi cũng vào diễn đàn . bạn muốn gì cứ việc ghi vào đây tự nhiên tôi biết
mong muốn 2 có lẽ mình làm không đúng ý nhỉ. còn vụ lưu file bằng name tại cell B2 thì chịu. để mò tiếpcám ơn langtuchungtinh nhé, mình đã làm theo và ok
hi, cám ơn bạn.
mình có 2 sheet nữa cần convert dữ liệu, các bạn giúp mình nhé:
Vì file > 1 MB nên mình up lên mediafire, các bạn down về giúp mình.
2 sheet 2 và 2-2 mình đã làm theo và ok. còn sheet 6, 7 nhờ bạn.
http://www.mediafire.com/download/b654r651qhxaxhq/Material_New.xlsm
Đấy là dữ liệu mình dán để mình họa, mình lấy từ dữ liệu mình test.các cột PLAN_START_DATE ,PLAN_END_DATE,QTY lấy đâu ra mà dữ liệu lên tới tháng 9 ????
Đấy là dữ liệu mình dán để mình họa, mình lấy từ dữ liệu mình test.
Theo file thì nó là tháng 7 cậu nhé
Public Sub hello6()
hello67 Sheet5
End Sub
Public Sub hello67(targetWS As Worksheet, Optional ByVal endDate As Variant, _
Optional ByVal startRow As Integer = 5, Optional ByVal startCol As String = "C")
Dim lr As Long, arr As Variant, r As Long, c As Long, k As Long, arrRS As Variant, today As Variant
lr = Sheet8.UsedRange.SpecialCells(xlCellTypeLastCell).Row
arr = Sheet8.Range("C8:AM" & lr).Value
today = Format(Date, "yyyyMMdd")
If IsMissing(endDate) Then endDate = Sheet8.[AM8].Value
If IsEmpty(endDate) Then endDate = -1
ReDim arrRS(1 To 500000, 1 To 6)
For r = 2 To UBound(arr) Step 1
If arr(r, 4) = "Stock" Then
If InStr(arr(r, 3), "Assy") > 0 Then
If IsNumeric(arr(r, 2)) Then
If arr(r, 2) > 0 Then
For c = 6 To UBound(arr, 2) Step 1
If arr(1, c) <= endDate Then
If IsNumeric(arr(r, c)) Then
If arr(r, c) > 0 Then
k = k + 1
arrRS(k, 1) = arr(r, 1)
arrRS(k, 2) = 1111000570
arrRS(k, 3) = arr(1, c)
arrRS(k, 4) = arr(1, c)
arrRS(k, 5) = arr(r, c)
arrRS(k, 6) = today
End If
End If
End If
Next
End If
End If
End If
End If
Next
With targetWS
lr = WorksheetFunction.Max(.Range(startCol & startRow - 1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Row, startRow)
.Range(startCol & startRow & ":" & startCol & lr).Resize(, 6).ClearContents
If k > 0 Then .Range(startCol & startRow).Resize(k, 6) = arrRS
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
hello67 Sheet6, Target.Value, 7, "B"
End If
End Sub
Sheet 6 mình chạy ok , nhưng sheet7 thì báo lỗi cậu ạ View attachment 146154
file nào lỗi đem lên đây
bạn vô đây down giúp mình
http://www.mediafire.com/download/5zj6uzkrc4x2gv5/Material_New1.xlsm
cái sub hello67 là để dùng chung giữa 2 sheet "6" và "7"
nên phải chèn thêm 1 module mới
bỏ sub hello67 vào trong module mới đó
Dovean, cậu kiểm tra lại điều kiện lấy giúp mình, 2 sheet này điều kiện là khác nhau nên mình nghĩ code chỉ đúng với sheet "6" mà không đúng với sheet "7"
[TABLE="width: 422"]
[TR]
[TD]Điều kiện lọc DL của sheet "7"
Convert từ sheet Atual[/TD]
[/TR]
[TR]
[TD]Điều kiện lấy dữ liệu :[/TD]
[/TR]
[TR]
[TD] Cột F8 : lấy dữ liệu với Actual[/TD]
[/TR]
[TR]
[TD] Cột E8 lấy dữ liệu với Assy (Riêng assy không thôi chứ không có assy1,2,3..)[/TD]
[/TR]
[TR]
[TD]Vùng dữ liệu là : H8 : AM:8[/TD]
[/TR]
[TR]
[TD][/TD]
[/TR]
[TR]
[TD]Mong muốn : Khi người dùng chọn ngày tháng thì sẽ list các dữ[/TD]
[/TR]
[TR]
[TD]liệu từ ngày được chọn trở về đầu tháng có trong[/TD]
[/TR]
[TR]
[TD]vùng dữ liệu tương ứng với item trong Cột C[/TD]
[/TR]
[TR]
[TD][/TD]
[/TR]
[TR]
[TD]Ví dụ : mình chọn ngày tháng là 20150712 thì sẽ list[/TD]
[/TR]
[TR]
[TD] tất cả các dữ liệu từ ngày 12/7 trở về 30/06[/TD]
[/TR]
[TR]
[TD][/TD]
[/TR]
[TR]
[TD][/TD]
[/TR]
[/TABLE]
theo kết quả chạy được thì mình thấy chưa đúng,
cậu xem ảnh mình đính kèm nhé.
View attachment 146169
với sheet "7" thì Cột F8 : lấy dữ liệu với Actual
Public Sub hello67(targetWS As Worksheet, Optional ByVal endDate As Variant, _
Optional ByVal startRow As Integer = 5, Optional ByVal startCol As String = "C", _
Optional ByVal colF As String = "Stock", Optional ByVal ar As Boolean = True)
Dim lr As Long, arr As Variant, r As Long, c As Long, k As Long, arrRS As Variant, today As Variant
lr = Sheet8.UsedRange.SpecialCells(xlCellTypeLastCell).Row
arr = Sheet8.Range("C8:AM" & lr).Value
today = Format(Date, "yyyyMMdd")
If IsMissing(endDate) Then endDate = Sheet8.[AM8].Value
If IsEmpty(endDate) Then endDate = -1
ReDim arrRS(1 To 500000, 1 To 6)
For r = 2 To UBound(arr) Step 1
If arr(r, 4) = colF Then
If InStr(arr(r, 3), "Assy") > 0 Then
If ar Or arr(r, 3) = "Assy" Then
If IsNumeric(arr(r, 2)) Then
If arr(r, 2) > 0 Then
For c = 6 To UBound(arr, 2) Step 1
If arr(1, c) <= endDate Then
If IsNumeric(arr(r, c)) Then
If arr(r, c) > 0 Then
k = k + 1
arrRS(k, 1) = arr(r, 1)
arrRS(k, 2) = 1111000570
arrRS(k, 3) = arr(1, c)
arrRS(k, 4) = arr(1, c)
arrRS(k, 5) = arr(r, c)
arrRS(k, 6) = today
End If
End If
End If
Next
End If
End If
End If
End If
End If
Next
With targetWS
lr = WorksheetFunction.Max(.Range(startCol & startRow - 1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Row, startRow)
.Range(startCol & startRow & ":" & startCol & lr).Resize(, 6).ClearContents
If k > 0 Then .Range(startCol & startRow).Resize(k, 6) = arrRS
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
hello67 Sheet6, Target.Value, 7, "B", "Actual", False
End If
End Sub
Nick người ta là chim hồng mà sửa thành chim.. què là sao thế nhỉ?trước tiên là cám ơn Dovean
hehe em không cố ýNick người ta là chim hồng mà sửa thành chim.. què là sao thế nhỉ?![]()
Public Sub hello8()
Dim arr As Variant, r As Long, c As Integer, k As Long, lr As Long, today As Variant
Dim rsArr As Variant, codeNames As Variant
today = Format(Date, "yyyyMMdd")
arr = Sheet4.Range("BM7:CV368").Value
codeNames = Sheet4.Range("Z7:Z368").Value
ReDim rsArr(1 To 500000, 1 To 8)
For r = 2 To UBound(arr) Step 1
If arr(r, 36) > 0 Then
For c = 1 To UBound(arr, 2) - 1 Step 1
If arr(r, c) > 0 Then
k = k + 1
rsArr(k, 1) = arr(1, c)
rsArr(k, 2) = 1111000570
rsArr(k, 3) = codeNames(r, 1)
rsArr(k, 4) = arr(r, c)
rsArr(k, 5) = today
rsArr(k, 6) = 99991231
rsArr(k, 7) = today
rsArr(k, 8) = c
End If
Next
End If
Next
With Sheet9
lr = WorksheetFunction.Max(.Range("C4").CurrentRegion.SpecialCells(xlCellTypeLastCell).Row, 5)
.Range("C5:C" & lr).Resize(, 8).ClearContents
If k > 0 Then .Range("C5").Resize(k, 8).Value = rsArr
.Range("C5").Resize(k, 8).Sort .[J5], xlAscending
.Range("J5").Resize(k).ClearContents
End With
End Sub
Thật sự cám ơn Doveandrose nhé, những giúp đỡ của bạn đã giúp mình rất nhiều. Nếu ở Hà Nội, Mình muốn mời bạn đi uống cafe![]()