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


- Tham gia
- 5/11/13
- Bài viết
- 67
- Được thích
- 0
Anh nào cho em mail hoặc số điện thoại em hỏi cụ thể được không ạ?
Mình thấy bạn hỏi vấn đề này mấy lần rồi, cũng có nhiều người viết code và hướng dẫn giúp bạn rồi. Nhưng hình như có hiểu nhầm về cách bạn diễn đạt.Em đang xuất dữ liệu từ OPC sang excel để lưu trữ, nhưng những 1000 dữ liệu nên không thể lưu vào 1000 vùng nhớ và đưa ra 1000 ô bên excel được. Giờ e muốn đẩy từng dữ liệu lên vào 1 ô, cứ 1s đẩy lên 1 dữ liệu vào ô A1. Giờ làm sao để mỗi lần e đẩy dữ liệu lên ô A1 thì giá trị cũ của ô A1 đẩy xuống ô dưới và ô A1 nhận dữ liệu mới. Cứ vậy tạo thanh một cột dữ liệu 1000 giá trị. Ai giúp mình với, Thank!
Bác đâu rồi vào giúp em với, đang cần gấp.Mình thấy bạn hỏi vấn đề này mấy lần rồi, cũng có nhiều người viết code và hướng dẫn giúp bạn rồi. Nhưng hình như có hiểu nhầm về cách bạn diễn đạt.
Theo như bạn nói tại bài này thì dữ liệu xuất từ phần mềm OPC xuống Excel, có nghĩa là từ phần mềm OPC "đẩy" dữ liệu, và bạn lại muốn đẩy từng dữ liệu ... Cái này là hoạt động của phần mềm OPC chứ không phải là hoạt động của Excel.
Có vấn đề này bạn nên nói rõ: Khi phần mềm OPC hoạt động (đẩy dữ liệu) thì Excel đã hoạt động chưa? Hay là phần mềm OPC hoạt động xuất dữ liệu (export) xong thì mới trả ra kết quả là 1 file Excel?
Nếu trên windows cả 2 cùng hoạt động: cách 1 giây phần mềm xuất dữ liệu xuống Excel, thì cứ cách 1 giây trên file Excel có 1 dữ liệu (ví dụ tại A1). Có thể dùng code, bạn xem lại những code đã trả lời bạn ở mấy bài trước. Còn ngược lại thì bạn phải liên hệ người viết phần mềm OPC cho cơ quan của bạn để thiết lập chức năng Export này.
Khả năng là code không có tác dụng trên Excel khi phần mềm OPC của bạn export dữ liệu xuống. Nếu có thể, bạn gửi Teamview vào hộp tin để mình xem thử, không được thì mình cũng chịu thua thôi vì phần mềm OPC bạn nói mình chẳng biết gì về nó.Bác đâu rồi vào giúp em với, đang cần gấp.![]()
Bạn cần gấp thì thuê gấp 1 chuyên gia về công ty coi vấn đề nằm chổ nào. GPE có ai thấy cái máy tính của bạn đâuBác đâu rồi vào giúp em với, đang cần gấp.![]()
Sub Chen_Cell()
Dim Sarr()
If [A2] = Empty Then Exit Sub
Sarr = Range([A1], [A65536].End(3)).Value
[A2].Resize(UBound(Sarr)) = Sarr
[A1].ClearContents
End Sub
Mình mà hiểu chữ đẩy của bạn thì chết liền đó
Vần đề đây không phải là phần mền OPC. OPC e cho đẩy dữ liệu vào như kiểu ô C1 đẩy vào ô A1 (vd A1=C1) thằng C1 thay cho OPC, thằng C1 thay đổi thì A1 thay đổi và giá trị trước đó của thằng A1 được đẩy xuống. Nói chung là không nhập trực tiếp trên excel, giờ làm sao mà excel biết ô đấy có giá trị thay đổi thì chuyển dần dữ liệu xuống, hoặc là cứ tần suất bao nhiêu thì ô tự chuyển dữ liệu xuống thành 1 cột dữ liệu.Khả năng là code không có tác dụng trên Excel khi phần mềm OPC của bạn export dữ liệu xuống. Nếu có thể, bạn gửi Teamview vào hộp tin để mình xem thử, không được thì mình cũng chịu thua thôi vì phần mềm OPC bạn nói mình chẳng biết gì về nó.
Kiểu như Khổng Tử đẩy xe bò đấyđẩy mà cũng hổng biết nữa thì mần ăn gì![]()
Giờ bác cứ thay OPC bằng một ô bất kỳ trên excel để thay đổi giá trị là được VD: A1=C1, C1 để nhập giá trị còn A1 đẩy dữ liệu dần xuống. nhưng khi viết code thì thằng C1 không liên quan xem như nó ở phần mền khác.Khả năng là code không có tác dụng trên Excel khi phần mềm OPC của bạn export dữ liệu xuống. Nếu có thể, bạn gửi Teamview vào hộp tin để mình xem thử, không được thì mình cũng chịu thua thôi vì phần mềm OPC bạn nói mình chẳng biết gì về nó.
Bạn đã thử bài #15 chưa? Đưa code bài #15 vào thử xem.Giờ bác cứ thay OPC bằng một ô bất kỳ trên excel để thay đổi giá trị là được VD: A1=C1, C1 để nhập giá trị còn A1 đẩy dữ liệu dần xuống. nhưng khi viết code thì thằng C1 không liên quan xem như nó ở phần mền khác.
PHP:Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Address = "$C$1" Then [A1].Insert shift:=xlDown [A2] = .Value .Select End If End With End Sub
Ý e không phải vậy. Cái ô C1 không đưa vào code vì nó là thay cho phần mền OPC để nhập dữ liệu. Giờ phải xem thay đổi của ô A1 để đẩy ra mà.Bạn đã thử bài #15 chưa? Đưa code bài #15 vào thử xem.
Bạn diễn giải hết khả năng chưa chắc người khác hiểu hết 50% ý của bạn. Nếu bạn quay lại được quá trình hoạt động của OPC và Excel trên máy bạn và up lên đây thì may ra có người hiểu. Mình có hỏi bạn có thể gửi Teamview (gửi ID và pass phần mềm Teamview trên máy bạn để cho người khác xem hoặc tác động lên máy bạn), không được thì cũng chịu thua thôi.Ý e không phải vậy. Cái ô C1 không đưa vào code vì nó là thay cho phần mền OPC để nhập dữ liệu. Giờ phải xem thay đổi của ô A1 để đẩy ra mà.
Nếu bạn "chịu" để trống ô A1, khi nào ô A1 có dữ liệu mới bị "đẩy xuống", thì thử code này.Ý e không phải vậy. Cái ô C1 không đưa vào code vì nó là thay cho phần mền OPC để nhập dữ liệu. Giờ phải xem thay đổi của ô A1 để đẩy ra mà.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If Target <> "" Then
[A1].EntireRow.Insert
[A1].Select
End If
End If
End Sub
Thế này chỉ là mình nhập trực tiếp từ ô A1, còn e đẩy từ phần mền khác sang thì không được. Anh xem video trên đấy, giúp em với.Nếu bạn "chịu" để trống ô A1, khi nào ô A1 có dữ liệu mới bị "đẩy xuống", thì thử code này.
Bằng không thì "chạy".
Mã:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then If Target <> "" Then [A1].EntireRow.Insert [A1].Select End If End If End Sub
Tôi không xem được Video, cũng không biết cách "đẩy' của "phần mền" khác ra sao.Thế này chỉ là mình nhập trực tiếp từ ô A1, còn e đẩy từ phần mền khác sang thì không được. Anh xem video trên đấy, giúp em với.
Tôi đã đính kèm file ở bài trên. khi nào bạn muốn "đẩy" thì "đẩy".Vậy có cách nào để biết ô A1 đang thay đổi và đẩy nó xuống dưới như code trên không a hoặc là cứ chu kỳ bao nhiêu s thì nó lại lấy giá trị ô A1 đẩy dần xuống?