Nhiều khi không phải do Nhà thầu muốn làm thế đâu bạn mà do Chủ đầu tư quyết định, quyết luôn cho cả Tư vấn giám sát, Nhà thầu. Đâu phải cứ thẳng thắn chuẩn chỉ là đúng, là tốt đâu. Nhiều khi biết sai vẫn phải làm. Cơ chế VN nhiều khi là vậy
Miễn là làm việc, hoạt động trong giới hạn cho phép là OK.
Vấn đề ở đây là tôi nhờ các cao thủ chỉnh code để đạt yêu cầu.
Nhiều khi không phải do Nhà thầu muốn làm thế đâu bạn mà do Chủ đầu tư quyết định, quyết luôn cho cả Tư vấn giám sát, Nhà thầu. Đâu phải cứ thẳng thắn chuẩn chỉ là đúng, là tốt đâu. Nhiều khi biết sai vẫn phải làm. Cơ chế VN nhiều khi là vậy
Miễn là làm việc, hoạt động trong giới hạn cho phép là OK.
Vấn đề ở đây là tôi nhờ các cao thủ chỉnh code để đạt yêu cầu.
Đã là nhật ký , nhật ký công trường thì phải ghi trung thực ghi tay là tốt nhất, hoặc là chí ít phải nhập vào máy tính từng ngày.
Làm kiểu như ở topic này là chống đối. Chúng ta cứ hỏi đường xa không tốt, công trình tượng đài, công trình công cộng khác nhanh xuống cấp, thiếu giám sát chặt chẽ,...., chất lượng không tốt là do đâu... Vậy mà cứ giúp thế này là tiếp tay cho sự làm ẩu, chống chế, làm cho có, đã vậy lại còn muốn tự động chống chế làm ẩu, tự động chống chế nhanh ẩu. Đề nghị mọi người hãy đặt lòng tốt đúng chỗ (vì làm sai mục tiêu của nhật ký, nhật ký giúp ghi nhận mọi hoạt động cũng như làm người kỹ sư, những người liên quan có trách nhiệm hơn, và căn cứ kiểm soát sau này).
Nếu cái này không đúng với trường hợp riêng của chủ topic thì đề nghị chủ topic giải thích và bỏ qua ý chung trên.
Không biết bác có làm xây dựng không em không biết.
Cách này hay ở 1 chỗ làm tự động liệt kê công việc theo ngày tháng ra luôn
Còn nếu làm ngày nào ghi ngày đó thì có một số vấn đề xảy ra
một là đã ghi (ghi tay) từng ngày rồi. sau này nếu giám sát muốn đổi ngày để đúng lịch trình ( chỗ này xin giải thích thế này: công trình rao lên, nhà thầu đi đấu, nhưng chỉ là hình thức, thực tế là đã bàn giao mặt bằng cho nhà thầu và thi công vài hạng mục rồi, như vậy khi trúng thầu và được bàn giao mặt bằng ví dụ là 20/10/2015, mà trong khi đó do 1 số lý do nào đó mà nhà thầu đã nhận mặt bằng vào 1/10/2015- trước 19 ngày- như thế tiến độ sẽ nhanh hơn thời gian thực là 19 ngày thì làm biết bao nhiêu công việc rồi)
như vậy bác ghi tay. thì lúc ghi nhận mặt bằng ngày mấy.
giả xử 30/10/2015 bác thi công đóng cọc mố. (bê tông đã đủ tuổi do nhận mặt bằng 1/10/2015 và xử dụng phụ gia)
nếu ghi là 20/10/2015 thì liệu có kịp làm để đóng cọc ngày 30 không.
thực tế bây giờ những người dưới công trình không được mấy ai ghi nhật ký đâu
toàn đưa về công ty cho lính lác ghi không à
còn ngày tháng thì binh biến tùm lum
Nhiều khi không phải do Nhà thầu muốn làm thế đâu bạn mà do Chủ đầu tư quyết định, quyết luôn cho cả Tư vấn giám sát, Nhà thầu. Đâu phải cứ thẳng thắn chuẩn chỉ là đúng, là tốt đâu. Nhiều khi biết sai vẫn phải làm. Cơ chế VN nhiều khi là vậy
Miễn là làm việc, hoạt động trong giới hạn cho phép là OK.
Vấn đề ở đây là tôi nhờ các cao thủ chỉnh code để đạt yêu cầu.
còn vụ bác này. cái vụ ngày giờ này kia em nghĩ được nhưng có quan trọng không
em cũng xây dựng nên hiểu công việc của bác
hiện tại em cũng có 1 công trình
giám sát đưa list ngày tháng để ghi nhật ký thời gian 1 năm rưỡi
yêu cầu ghi trong 2 ngày.
thử hỏi liệu có kịp không nếu làm bằng tay nhìn mà lọc ra công việc nào ngày nào
em nghĩ code như thế là được rồi
nhật ký bác vẫn còn thiếu 1 mục nhân công, máy moc xử dụng trong ngày đó như thế nào nữa nha.
bác thử code ngu của em thế nào. tuy không nhanh nhưng vẫn giải quyết vụ điền ngày vs STT
Mã:
Sub NhatKy()
'Application.ScreenUpdating = False
Dim MangDanhMuc, MangNhatKy(1 To 60000, 1 To 11)
Dim Khoang, i, m, c As Long
c = Sheet1.UsedRange.Rows.Count
'===============================================
MangDanhMuc = Sheet1.Range("A18:A" & c).Resize(, 11)
'm = Sheet1.[A65536].End(3).Row
BatDau = Sheet5.Range("F5").Value
KetThuc = Sheet5.Range("F6").Value
j = 1 'dong thu j
k = 1 'so thu tu
'xoa du lieu
Sheet4.Range("A14:E100").Value = ""
'vong lap ket thuc khi ngay bat dau > ngay ket thuc
Do While BatDau <= KetThuc
For i = 1 To c - 18
BD = MangDanhMuc(i, 6)
KT = MangDanhMuc(i, 7)
If BD = "" Or KT = "" Then GoTo Nex
'kiem tra xem cong viec co namg trong khoang thoi gian xxxx khong
If BD <= BatDau And KT >= BatDau Then
'kiem tra ngay de dien vao
If KTraNgay <> BatDau Then
KTraNgay = BatDau
DienNgay = BatDau
Else
DienNgay = ""
End If
'kiem tra va dien hang muc
HMucNguon = MangDanhMuc(i, 2)
If KTraHMuc <> HMucNguon Then
KTraHMuc = HMucNguon
DienHangMuc = HMucNguon
Else
DienHangMuc = ""
End If
'kien tra va dien STT
If DienNgay <> "" Then
MangNhatKy(j, 1) = k
'MsgBox MangNhatKy(j, 1)
k = k + 1
End If
'dien vao sheet Nhat ky
MangNhatKy(j, 2) = DienNgay
MangNhatKy(j, 3) = DienHangMuc 'hang muc
MangNhatKy(j, 4) = MangDanhMuc(i, 3) 'noi dung cong vc
j = j + 1
Else
For m = 1 To j
If MangNhatKy(m, 2) = BatDau Then
Tim = 1
GoTo Tiep
Else
Tim = 0
End If
Next m
Tiep:
If Tim > 0 Then
GoTo Nex
Else
If i = c - 18 Then
MangNhatKy(j, 1) = k
k = k + 1
MangNhatKy(j, 2) = BatDau
MangNhatKy(j, 4) = "Mýa, Công trýõÌng nghiÒ"
j = j + 1
End If
End If
End If
Nex:
Next i
BatDau = BatDau + 1
Loop
Range("A14:D14").Resize(j).Value = MangNhatKy
Application.ScreenUpdating = True
End Sub
Không biết bác có làm xây dựng không em không biết.
Cách này hay ở 1 chỗ làm tự động liệt kê công việc theo ngày tháng ra luôn
Còn nếu làm ngày nào ghi ngày đó thì có một số vấn đề xảy ra
một là đã ghi (ghi tay) từng ngày rồi. sau này nếu giám sát muốn đổi ngày để đúng lịch trình ( chỗ này xin giải thích thế này: công trình rao lên, nhà thầu đi đấu, nhưng chỉ là hình thức, thực tế là đã bàn giao mặt bằng cho nhà thầu và thi công vài hạng mục rồi, như vậy khi trúng thầu và được bàn giao mặt bằng ví dụ là 20/10/2015, mà trong khi đó do 1 số lý do nào đó mà nhà thầu đã nhận mặt bằng vào 1/10/2015- trước 19 ngày- như thế tiến độ sẽ nhanh hơn thời gian thực là 19 ngày thì làm biết bao nhiêu công việc rồi)
như vậy bác ghi tay. thì lúc ghi nhận mặt bằng ngày mấy.
giả xử 30/10/2015 bác thi công đóng cọc mố. (bê tông đã đủ tuổi do nhận mặt bằng 1/10/2015 và xử dụng phụ gia)
nếu ghi là 20/10/2015 thì liệu có kịp làm để đóng cọc ngày 30 không.
thực tế bây giờ những người dưới công trình không được mấy ai ghi nhật ký đâu
toàn đưa về công ty cho lính lác ghi không à
còn ngày tháng thì binh biến tùm lum
Vậy thì chào thua, đừng hỏi tại sao tùm lum, tại sao sai, và tại sao tại sao ... mọi thứ lại thế ...vì: nó thế nên nó vẫn thế.
Nhưng anh em ở đây chia sẻ lòng tốt vì một XH tốt lên chứ không phải là vì những cái làm ngày càng tồi tệ hơn.
Đó là nói chung thê, còn vào thế thì phải thế là trường hợp riêng rui... bắc thang lên hỏi ông trời vậy. Mọi người cứ giúp tiếp đi vì đó là về code , đôi khi đẩy cho nó phát triển nhanh cho chóng qua nhanh.
Phải làm trong ngành thì mới hiểu tại sao phải chế cháo ra Hồ sơ. Chế nhưng vẫn KHỚP là OK trong 1 giới hạn cho phép. Vẫn sống và làm việc theo hiến pháp và pháp luật!
to langtuchungtinh :
giờ thì không nhất thiết phải đưa vào ngày nghiệm thu. Chỉ khi Tư vấn GS yêu cầu quá chặt chẽ thì ta phải làm CHI TIẾT.
Đúng còn mục thời tiết, máy móc thiết bị nhân lực trong Nhật ký nữa.
Thử chạy code của bạn sao chỉ thấy dữ liệu xuất ra từ dòng có TT 88 trở đi?
Phải làm trong ngành thì mới hiểu tại sao phải chế cháo ra Hồ sơ. Chế nhưng vẫn KHỚP là OK trong 1 giới hạn cho phép. Vẫn sống và làm việc theo hiến pháp và pháp luật!
Chế một vài hạng mục độc lập thấy có vẻ là khớp nhưng nếu ráp toàn bộ hồ sơ các hạng mục của một công trình lại thì xem ra dùng excel không qua được tay cứng được đâu.
Chỉ cần lập tiến độ hóa đơn, tiến độ biên bản và tiến độ nhật ký, khớp hay không sẽ biết ngay.
Không phải lỗi mà là dữ liệu bác đưa sai
tải lại file #1 rồi so sánh với #73 xem. 2 file cấu trúc khác nhau
file #1 thì có tùm lum ngày thi công hết, trong khi đó # 73 lại trống rỗng, chỉ có mỗi ngày nghiệm thu
vậy bác nói rõ căn cứ vào cột nào để so sánh và điền vào. code của tui và dovanrose đều căn cứ vào ngày bắt đầu và thi công để so sánh đấy
Không phải lỗi mà là dữ liệu bác đưa sai
tải lại file #1 rồi so sánh với #73 xem. 2 file cấu trúc khác nhau
file #1 thì có tùm lum ngày thi công hết, trong khi đó # 73 lại trống rỗng, chỉ có mỗi ngày nghiệm thu
vậy bác nói rõ căn cứ vào cột nào để so sánh và điền vào. code của tui và dovanrose đều căn cứ vào ngày bắt đầu và thi công để so sánh đấy
vậy chỉ căn cứ ngày bắt đầu với ngày nghiệm thu để điền thôi đúng không
Mã:
Sub NhatKy()
Application.ScreenUpdating = False
Dim MangDanhMuc, MangNhatKy(1 To 60000, 1 To 11)
'==============================================
Dim i, m, c, STT As Long
Dim BigRng As Range
On Error Resume Next
With Sheet1.Range("A1").SpecialCells(2)
Set BigRng = .Areas(1)
For i = 1 To .Areas.Count
Set BigRng = Range(Sheet1.Cells(18, 1), .Areas(i))
Next i
End With
MangDanhMuc = BigRng
'===============================================
c = UBound(MangDanhMuc, 1)
BatDau = Sheet5.Range("F5").Value
KetThuc = Sheet5.Range("F6").Value
j = 1 'dong thu j
STT = 1 'so thu tu
'xoa du lieu
Sheet4.Range("A14:E" & Sheet4.UsedRange.Rows.Count).Value = ""
'vong lap ket thuc khi ngay bat dau > ngay ket thuc
Do While BatDau <= KetThuc
For i = 1 To c
BD = MangDanhMuc(i, 6)
If BD <> 0 Then BDTam = BD
KT = MangDanhMuc(i, 11)
'If BD = "" Or KT = "" Then GoTo Nex
'kiem tra xem cong viec co namg trong khoang thoi gian xxxx khong
If BDTam <= BatDau And KT < KetThuc Then
'kiem tra ngay de dien vao
If KTraNgay <> BatDau Then
KTraNgay = BatDau
DienNgay = BatDau
Else
DienNgay = ""
End If
'kiem tra va dien hang muc
HMucNguon = MangDanhMuc(i, 2)
If KTraHMuc <> HMucNguon Then
KTraHMuc = HMucNguon
DienHangMuc = HMucNguon
Else
DienHangMuc = ""
End If
'kien tra va dien STT
If DienNgay <> "" Then
MangNhatKy(j, 1) = STT
STT = STT + 1
End If
'dien vao sheet Nhat ky
MangNhatKy(j, 2) = DienNgay
MangNhatKy(j, 3) = DienHangMuc 'hang muc
MangNhatKy(j, 4) = MangDanhMuc(i, 3) 'noi dung cong vc
j = j + 1
Else
For m = 1 To j
If MangNhatKy(m, 2) = BatDau Then
Tim = 1
GoTo Tiep
Else
Tim = 0
End If
Next m
Tiep:
If Tim > 0 Then
GoTo Nex
Else
If i = c Then
MangNhatKy(j, 1) = STT
STT = STT + 1
MangNhatKy(j, 2) = BatDau
MangNhatKy(j, 4) = "Mua, Cong Truong Nghi"
j = j + 1
End If
End If
End If
Nex:
Next i
BatDau = BatDau + 1
Loop
Sheet4.Range("A14:D14").Resize(j).Value = MangNhatKy
Application.ScreenUpdating = True
End Sub
mấy khoảng trống đó là do bảng dữ liệu bác chưa điền.
bác không đưa dữ liệu chính lên thì tui chịu, nghỉ chỉnh nữa rồi
mỗi lần chỉnh lại đưa dữ liệu khác
thiếu này thiếu kia......
lại thêm cái pass vba. tui chả rảnh đâu mà cứ mỗi lần giúp lại phải phá pass mất thời gian
---------------------------------
bác cứ nói chung chung cuối cùng chả biết là lấy mốc căn cứ nào để mà so sánh điền vào cho vừa ý bác nữa. ba hồi thì thời gian bắt đầu kết thúc, ba hồi thì lại là thời gian bắt đầu với nghiệm thu
---------------------------------
với số lượng gần 4k bài gửi mà nói không biết viết code thì cũng phục bác thật
1) bác cứ nói chung chung cuối cùng chả biết là lấy mốc căn cứ nào để mà so sánh điền vào cho vừa ý bác nữa. ba hồi thì thời gian bắt đầu kết thúc, ba hồi thì lại là thời gian bắt đầu với nghiệm thu
---------------------------------
2) với số lượng gần 4k bài gửi mà nói không biết viết code thì cũng phục bác thật
Qua quá trình sử dụng thấy code của tác giả file Nhat ky gây lỗi do không phù hợp với dữ liệu của tôi nên phải điều chỉnh.
Xin trả lời bạn như sau:
1) Tiêu chí để viết Nhật ký là căn cứ theo cột F, cột G, cột J, cột K. Như bài #58 tôi đã nói, bỏ qua tất cả vòng lặp gì đó liên quan đến thời gian min max gì đó. Còn cột H và cột I chỉ để làm Biên bản nghiệm thu và Phiếu yêu cầu, chỉ thêm vào khi viết Nhật ký CHI TIẾT.
2) Tôi chưa biết và viết được 1 chữ nào trong code luôn.
Cảm ơn bạn!
p/s : cha giám sát ghê nhỉ, thế bạn nghĩ "mưu" để "đẩy" đi.
Chạy thử code của bạn langtuchungtinh bài #76 thấy không ổn rồi
+) Ra kết quả lại có 1 lô, 1 lốc các đầu việc trong cùng 1 ngày. Mà ngày đó bên sheet Danh muc không có các đầu việc đó!
+) Hết 1 lô đầu việc đấy lại có 1 đoạn dài các dòng trắng không có dữ liệu.
file này so với file #1 khác xa nhau , cột B, F,G trống trơn thì code chạy cái gì được . yêu cầu giúp về code nhưng lại đặt password VBA đã là khó chấp nhận , mà anh nói là file không phải của anh nên không biết pass mà code thì anh cập nhật liên tục vào file ?
người ta viết code xong thì sửa cấu trúc dữ liệu rồi nói code chạy lỗi lại càng không thể chấp nhận
khi cảm thấy không vừa ý là tôi nói thẳng chứ không ngại ai cả , nhiều người ở diễn đàn này biết tôi viết code xong mà người dùng thay đổi cấu trúc dữ liệu rồi kêu tôi code lại là tôi bỏ chạy luôn , và lần này cũng vậy .
file này so với file #1 khác xa nhau , cột B, F,G trống trơn thì code chạy cái gì được . yêu cầu giúp về code nhưng lại đặt password VBA đã là khó chấp nhận , mà anh nói là file không phải của anh nên không biết pass mà code thì anh cập nhật liên tục vào file ?
.
Tôi đã nói chuyện pass VBA tại #1 bạn quét chuột chọn dòng dữ liệu sau chữ VBA đến dấu chấm sẽ thấy.
Bạn giúp tôi chỉnh code để đơn giản chỉ kết quả như #58, #57 và #78 thôi. Code của bạn đã khá OK rồi.
Tôi đã nói chuyện pass VBA tại #1 bạn quét chuột chọn dòng dữ liệu sau chữ VBA đến dấu chấm sẽ thấy.
Bạn giúp tôi chỉnh code để đơn giản chỉ kết quả như #58, #57 và #78 thôi. Code của bạn đã khá OK rồi.
Tôi nói câu này chắc hơi vô duyên:
" thì bác cứ nói mẹ pass ra cho rồi, quét quyết gì nữa rồi mới thấy"
Muốn làm được thì chút ít cũng cho 1 vài kết quả với dữ liệu đầy đủ vài cái chứ, bác cứ nói dựa cột này cột kia, ý là tui bên xây dựng còn không hiểu, nói gì "chim hồng" không phải dân xây dựng làm sao hiểu ý bác muốn gì.
Thứ 1: muốn được giúp gì thì 1 là đưa dữ liệu mẫu gần giống nhất với file thật (nếu file có tính bảo mật)
Thứ 2: trình bày kết quả mong muốn có được
Thứ 3: trình bày cách làm thế nào ra kết quả đó
Bác có nhiều bài viết vậy, tham gia diễn đàn trước tui, lâu hơn tui, không lẽ bác không biết làm thế nào để người giúp dễ hiểu ý mình muốn để được kết quả mong muốn.
Nói nhiều vậy thôi, cũng chả giúp nữa đâu, ba hồi nói ý thế này thế kia chả biết đường mà lần