Cách tự tính thời gian tự động và tên sheet tự động thay đổi (1 người xem)

  • Thread starter Thread starter txk123
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

txk123

Thành viên mới
Tham gia
3/5/14
Bài viết
1
Được thích
0
chào các bạn!
Mình có một bảng tính mình muốn nhờ các bạn chỉ giúp mình
Một:cách tính giờ ví dụ trong một ô mình đánh là 7:30 - 8:30 thì nó tự tính giờ và hiện sang một ô mà mình cần điền là 60 phút.
Hai:mình muốn nhờ các bạn chỉ hộ mình cách làm sheet tự động ví dụ như sheet1 sửa thành ngay1_5 sheet2 sửa thành 2_5 mình muốn nó tự động thay đổi
 

File đính kèm

chào các bạn!
Mình có một bảng tính mình muốn nhờ các bạn chỉ giúp mình
Một:cách tính giờ ví dụ trong một ô mình đánh là 7:30 - 8:30 thì nó tự tính giờ và hiện sang một ô mà mình cần điền là 60 phút.
Hai:mình muốn nhờ các bạn chỉ hộ mình cách làm sheet tự động ví dụ như sheet1 sửa thành ngay1_5 sheet2 sửa thành 2_5 mình muốn nó tự động thay đổi
vấn đề 1 bạn dùng công thức theo #3 nhé,

vấn đề 2:
bạn tải file đính kèm, cho chạy Macro.
thay đổi giá trị ngày và tháng tại ô A2 ---> sẽ hiện 1 Msgbox hỏi bạn có muốn thay đổi tên sheet ko?

Có thể xảy ra 2 lỗi sau:
- nếu giá trị ô A2 ko có dạng: Ngày日…number… tháng月…number
- hoặc tên sheet đó đã có

'----
code của sheet đó gồm:
[GPECODE=vb]
Function XuLyChuoi(Chuoi As String) As String
Dim wsFunc As WorksheetFunction
Dim Chuoi1 As String
Dim Chuoi2 As String

Set wsFunc = Application.WorksheetFunction

kytudacbiet = Evaluate(ThisWorkbook.Names("kytudacbiet").Value)

Chuoi1 = Left(Chuoi, wsFunc.Find(kytudacbiet, Chuoi, _
wsFunc.Find(kytudacbiet, Chuoi) + 1) - 1)

Chuoi2 = Right(Chuoi, Len(Chuoi) - wsFunc.Find(kytudacbiet, Chuoi, _
wsFunc.Find(kytudacbiet, Chuoi) + 1) - 1)

XuLyChuoi = "date" & ExtractNumber(Chuoi1) & "_" & ExtractNumber(Chuoi2)
End Function
[/GPECODE]


Function ExtractNumber (http://www.ozgrid.com/VBA/ExtractNum.htm)
có thể tách số ở những dạng sau:
xu ly chuoi.jpg

[GPECODE=vb]
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SheetName As String, Answer

If Target.Address = "$A$2" Then
If Target <> "" Then
On Error GoTo Stop1
SheetName = XuLyChuoi(Target.Value)
If ActiveSheet.Name <> SheetName Then
mSg = mSg & "Thay doi? te^n sheet tha`nh" & vbNewLine & SheetName
Answer = MsgBox(mSg, vbYesNo + vbQuestion)

If Answer = vbNo Then Exit Sub
'If Answer = vbYes Then
On Error GoTo Stop2
ActiveSheet.Name = SheetName
End If
End If
End If
Exit Sub

Stop1:
MsgBox ("Chuoi~ phai? co dang.:") & vbNewLine & _
("Ngay/ ... number... thang/ ...number"), vbExclamation
Exit Sub
Stop2:
MsgBox ("Ten sheet nay` da~ co' ---> kiem tra lai."), vbExclamation
End Sub
[/GPECODE]

Link: https://www.mediafire.com/?bddkvrx466l8p1n
 
Lần chỉnh sửa cuối:
Mình làm câu 1 nhé: excel lưu thời gian theo ngày, 1h=1/24 ngày, 1min=1/1440 ngày. Công thức ô B6 là
=(TRIM(RIGHT(A6,LEN(A6)-FIND("-",A6)))-TRIM(LEFT(A6,FIND("-",A6)-1)))*1440
Hàm Trim để phòng cạnh dấu - có dấu cách, nếu không có thì bỏ đi cũng được.
 
Lần chỉnh sửa cuối:
Câu 2: macro sau sẽ kiểm tra xem sheet có sheet date4_5 chưa (4_5 là ngày tháng hiện tại), nếu chưa có thì thêm vào sau cùng.
Sub Macro1()
Dim sh As Worksheet
namesheet = "date" & Day(Now()) & "_" & Month(Now())
For Each sh In Sheets
If sh.Name = namesheet Then Exit Sub
Next
Sheets.Add(after:=Sheets(Sheets.Count)).Name = namesheet
End Sub
 
Lần chỉnh sửa cuối:

Bài viết mới nhất

Back
Top Bottom