Nhập dữ liệu ở cột A, tự động điền giờ (giá trị) vào cột B (1 người xem)

Liên hệ QC

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

Bảy Dzõ

Ngu Excel nhất GPE
Tham gia
18/11/09
Bài viết
565
Được thích
1,361
Nghề nghiệp
Just for daily's rice
Vấn đề của em như sau:
Ở cột A em sẽ dùng cho các bạn nhập dữ liệu vào và em muốn nếu cột A có dữ liệu thì cột B sẽ hiển thị thời gian nhập một cách tự động và chỉ là value. Nếu sử dụng hàm now() thì mỗi lần nhập thì thời gian ở cột B sẽ tự động cập nhật theo hệ thống:
Ví dụ;
A1: 3245624967 B1: 10:37am
B1: 2235961453 B2: 10:39am
Nếu A trống thì B cũng trống.

Có cách nào làm thế được ko anh? Cám ơn.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Sư phụ nghỉ cho tiểu đệ biểu diễn tí.

Sửa code của nghiaphuc trong notepad nên không test. Chỉ "ước lượng" bằng mắt rồi sửa thôi.

[GPECODE=vb]
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range
If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
For Each Cll In Intersect(Target, [A:A])
If Cll <> "" Then
If Cll <> Cll.ID Then
Cll.Offset(, 1) = Format(Now, "hh:mm AM/PM")
Cll.ID = Cll
End If
Else
Cll.Offset(, 1).ClearContents
Cll.ID = ""
End If
Next
End Sub

[/GPECODE]

Bác Siwtom có thể giúp em giải thích sự khác biệt giữa code của bác và code anh Nghĩa Phúc giùm em được không? Vì em đang lọ mọ học nên muốn biết điểm khác biệt. Cám ơn bác
 
Upvote 0
Bác Siwtom có thể giúp em giải thích sự khác biệt giữa code của bác và code anh Nghĩa Phúc giùm em được không? Vì em đang lọ mọ học nên muốn biết điểm khác biệt. Cám ơn bác

code ngắn thì bạn so sánh sẽ thấy chỗ tôi thêm vào mà.
Khi nhập vào ô tại cột A lần đầu thì ô.Value <> ô.ID (ô.ID = "") nên code
Mã:
            If Cll <> Cll.ID Then
                Cll.Offset(, 1) = Format(Now, "hh:mm AM/PM")
                Cll.ID = Cll
            End If

được thực hiện (đk của IF thỏa). Kết quả ta có giờ tại cột B, và ô.Value = ô.ID
Khi ta xóa dòng thì vẫn có Cll = Cll.ID nên block IF không được thực hiện do đk không thỏa, vậy cột B không đổi.
Khi ta sửa cột A thì lại có Cll <> Cll.ID nên block IF lại được thực hiện (do đk thỏa) nên cột B được làm mới, và lại có Cll = Cll.ID
Khi xóa trong cột A thì cũng lại có Cll = Cll.ID (= "") và trở lại trạng thái ban đầu khi chưa nhập gì cả và "trò chơi" lại bắt đầu từ đầu
 
Upvote 0
code ngắn thì bạn so sánh sẽ thấy chỗ tôi thêm vào mà.
Khi nhập vào ô tại cột A lần đầu thì ô.Value <> ô.ID (ô.ID = "") nên code
Mã:
            If Cll <> Cll.ID Then
                Cll.Offset(, 1) = Format(Now, "hh:mm AM/PM")
                Cll.ID = Cll
            End If

được thực hiện (đk của IF thỏa). Kết quả ta có giờ tại cột B, và ô.Value = ô.ID
Khi ta xóa dòng thì vẫn có Cll = Cll.ID nên block IF không được thực hiện do đk không thỏa, vậy cột B không đổi.
Khi ta sửa cột A thì lại có Cll <> Cll.ID nên block IF lại được thực hiện (do đk thỏa) nên cột B được làm mới, và lại có Cll = Cll.ID
Khi xóa trong cột A thì cũng lại có Cll = Cll.ID (= "") và trở lại trạng thái ban đầu khi chưa nhập gì cả và "trò chơi" lại bắt đầu từ đầu

Cám ơn anh đã giải thích cặn kẽ. Thật cái lòng là em mới học nên tò mò hỏi để tìm ra cái khác biệt và công dụng của cái khác biệt đó để ghi nhớ mà sử dụng lần sau. Em đã thử test code của anh và có 1 vấn đề nhỏ như sau:

Em thay đổi cột giờ từ B sang F "Cll.Offset(, 5)", dữ liệu cột A chỉ có 3 hàng nhưng khi em xoá cột A thử thì nó chạy chậm khoảng 18 giây đó anh.
 
Upvote 0
Cám ơn anh đã giải thích cặn kẽ. Thật cái lòng là em mới học nên tò mò hỏi để tìm ra cái khác biệt và công dụng của cái khác biệt đó để ghi nhớ mà sử dụng lần sau. Em đã thử test code của anh và có 1 vấn đề nhỏ như sau:

Em thay đổi cột giờ từ B sang F "Cll.Offset(, 5)", dữ liệu cột A chỉ có 3 hàng nhưng khi em xoá cột A thử thì nó chạy chậm khoảng 18 giây đó anh.

Bạn chọn cả cột hay chọn 3 ô rồi xóa?
Nếu bạn chọn cả cột thì bạn hãy chạy code của nghiaphuc rồi cũng chọn cả cột xem sao. Cái chuyện này không liên quan gì tới việc đổi cột B sang F, vậy bạn cứ để B rồi chạy code
 
Upvote 0
Sư phụ nghỉ cho tiểu đệ biểu diễn tí.

Sửa code của nghiaphuc trong notepad nên không test. Chỉ "ước lượng" bằng mắt rồi sửa thôi.

Cũng là làm công việc "Đánh dấu" nhưng nay mới biết có thằng ID này
"Tiểu đệ" Hay quá!
Ẹc... Ẹc...
 
Upvote 0
Bạn chọn cả cột hay chọn 3 ô rồi xóa?
Nếu bạn chọn cả cột thì bạn hãy chạy code của nghiaphuc rồi cũng chọn cả cột xem sao. Cái chuyện này không liên quan gì tới việc đổi cột B sang F, vậy bạn cứ để B rồi chạy code

Dạ em xoá cả cột. Cả hai đoạn cốt đều chậm anh ah. Em hiểu là việc thay đổi cột thời gian ko ảnh hưởng tới chuyện này. Nhưng em test thử thì thấy nó chậm nên đưa lên để mọi người giải thích giùm em thôi. Thân.
 
Upvote 0
cái này hay quá !
mọi người cho mình hỏi thêm nhé !
nếu nhập liệu vào cột a thì cột b tự động nhảy giờ ( như code trên)
vậy mình mún thêm nữa như là :
nhập cột a thì cột B nhảy giờ
nhập cột c thì cột D nhảy giờ, và nhập cột
Nhập cột E thì cột F nhảy giờ
Không biết phải viết hay chỉnh sữa code như thế nào !$@!!
Xin các cao thủ chỉ giáo, thanks !
 
Upvote 0
cái này hay quá !
mọi người cho mình hỏi thêm nhé !
nếu nhập liệu vào cột a thì cột b tự động nhảy giờ ( như code trên)
vậy mình mún thêm nữa như là :
nhập cột a thì cột B nhảy giờ
nhập cột c thì cột D nhảy giờ, và nhập cột
Nhập cột E thì cột F nhảy giờ
Không biết phải viết hay chỉnh sữa code như thế nào !$@!!
Xin các cao thủ chỉ giáo, thanks !
Trong code của bác siwtom ở bài #20, bạn sửa lại [A:A] thành [A:A,C:C,E:E] là được.
 
Upvote 0
Sư phụ nghỉ cho tiểu đệ biểu diễn tí.

Sửa code của nghiaphuc trong notepad nên không test. Chỉ "ước lượng" bằng mắt rồi sửa thôi.

[GPECODE=vb]
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range
If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
For Each Cll In Intersect(Target, [A:A])
If Cll <> "" Then
If Cll <> Cll.ID Then
Cll.Offset(, 1) = Format(Now, "hh:mm AM/PM")
Cll.ID = Cll
End If
Else
Cll.Offset(, 1).ClearContents
Cll.ID = ""
End If
Next
End Sub

[/GPECODE]
Chào các bạn. Các bạn cho mình hỏi 1 chút về cách kết hợp của Code này.
+ Trên cùng 1 sheet:
- Nhập dữ liệu cột A -> côt B tự động hiển thị thời gian
- Nhập dữ liệu cột C -> Cột F tự động hiển thị thời gian.
Nhờ các bạn hỗ trợ giúp mình làm sao làm được như vậy.
Sau khi có giá trị thời gian của cột B & F công thức nào để trừ thời gian giữa 2 cột này để biết được thời gian trôi bao nhiêu (chỉ hiện thị số lượng giờ:phút ví dụ cột B: 13/11/2013 12:59:08 - Cột F :15/11/2013 12:59:08 thì thời gian trôi là 48H với F - B)
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn sửa số 1 chỗ Cll.Offset(, 1) thành 1 số khác là được, số 1 ở đây là số cột để dịch chuyển từ cột A đến cột kết quả. Chẳng hạn sửa cột B thành cột F thì thay số 1 bởi số 5.
Nhờ anh chỉ giúp em, nếu cho hiện ngày, tháng, năm thì sao? em có sửa lại thành dd:mm:yyyy nhưng sao nó ra toàn là số hehe, cảm ơn các anh, chị trước.
 
Upvote 0
Cảm ơn GPE, sau vài ngày vọc tới vọc lui cuối cùng cũng "ra" hehe. Nhưng em muốn thêm một cột ra giờ và một cột ra ngày thì mình làm thế nào? nhờ các anh chị giúp, cảm ơn.
 
Upvote 0
Cảm ơn GPE, sau vài ngày vọc tới vọc lui cuối cùng cũng "ra" hehe. Nhưng em muốn thêm một cột ra giờ và một cột ra ngày thì mình làm thế nào? nhờ các anh chị giúp, cảm ơn.
thì bạn chỉ cần sửa lại số cột sẽ offset va fomat từ hh:mm sang dạng ngày là dd/mm/yyy thôi mà
 
Upvote 0
Cho em hỏi nếu muốn nhập dữ liệu ngày giờ tự động theo cách này thì làm như thế nào ạ
Nếu dữ liệu từ ô Bi-->ACi thay đổi thì dữ liệu ngày giờ sẽ tự cập nhật ở ô Ai
 
Upvote 0
Dễ mà:
Xét cột kết quả, cái nào rổng thì điền giờ, ngược lại thì.. im re
Vậy thôi
Đại khái thế này chắc được:
Mã:
If Cll <> "" Then
  [COLOR=#ff0000]If Cll.Offset(, 1) = "" Then Cll.Offset(, 1) = Format(Now, "hh:mm AM/PM")[/COLOR]
Else
  Cll.Offset(, 1).ClearContents
End If

Nếu cũng trường hợp này, em muốn copy trên xuống dòng dưới hoặc dòng trên nữa (cùng cột) thì sao anh
 
Upvote 0
Mọi người ơi, Em cũng đang gặp vấn đề như trên. Tuy nhiên vấn đề của em là: Em muốn nhập dữ liệu vào cột E thì cột C tự động nhảy giờ. Không biết code phải sửa lại như thế nào. mọi người chỉ dùm em với nha.

Thanks All.
 
Upvote 0
Mọi người ơi, Em cũng đang gặp vấn đề như trên. Tuy nhiên vấn đề của em là: Em muốn nhập dữ liệu vào cột E thì cột C tự động nhảy giờ. Không biết code phải sửa lại như thế nào. mọi người chỉ dùm em với nha.

Thanks All.
Bạn dùng cái này:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 5 Then
        Target(1, -1) = Time
    End If
End Sub
 
Upvote 0
Bạn dùng cái này:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 5 Then
        Target(1, -1) = Time
    End If
End Sub

Cảm ơn bạn nhiều!
Nếu dùng code của bạn để làm cho trường hợp ô target là A và ô hiển thị thời gian là B chắc cũng ổn bạn nhỉ.
 
Upvote 0
Mọi người ơi mình đang bị kẹt một chút trong cách nhập dữ liệu trong excel, mọi người giúp dùm mình nhé.

Chả là thế này: Mình đang muốn nhập dữ liệu vào 1 vùng cells được thiết lập cố định, sau khi nhấn enter thì toàn bộ dữ liệu ở vùng cells đó sẽ được insert vào trong 1 bảng dữ liệu khác.

Cụ thể như là: Mình muốn nhập dữ liệu vào ô A1 sau khi nhấn enter thì dữ liệu sẽ được đổ và bảng đã lập sẵn từ [A2:A10]

Mình đang loay hoay viết code mà có vẻ như không khả thi vì kiến thức về viết code có hạn.

Rất mong nhận được sự hỗ trợ từ mọi người.

Xin chân thành cảm ơn!
 
Upvote 0
Web KT

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

Back
Top Bottom