Hiện sản phẩm của phản ứng hoá học

Liên hệ QC

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia
8/6/06
Bài viết
14,304
Được thích
22,342
Nghề nghiệp
Nuôi ba ba & trùn quế
Hàm SFFUng( xx, yy, zz, ww) sẽ trả về các sản fẩm tương ứng của các fw trình fản ứng các trường 1-6 của CSDL!
PHP:
Option Explicit
Option Base 1
Dim iDem As Integer: Dim KQua(9, 4) As Variant

Function SFFUng(rRang As Range, Chat1 As String, Chat2 As String, Chat3 As String) As Variant
    Dim iHang As Integer, jZ As Integer
    iDem = 0
    For iHang = 1 To 9
        For jZ = 1 To 4
            KQua(iHang, jZ) = ""
        Next jZ, iHang
        ' Tìm So Hang chua PTPU
        iHang = rRang.Count
        'Duyet Tung Hang
        For jZ = 1 To iHang
            If (Len(Chat1) <> 0) And (Len(Chat2) <> 0) And (Len(Chat3) <> 0) Then
                'Truong Hop Co Ca 3 Chat
                If (Chat1 = rRang.Item(jZ, 1).Value) And (Chat2 = rRang.Item(jZ, 2).Value) And (Chat3 = rRang.Item(jZ, 3).Value) Then
                    NhapCT jZ, rRang
                End If
            ElseIf (Len(Chat1) <> 0) And (Len(Chat2) <> 0) Then    'Truong Hop Co Chat1 & Chat2
                If (Chat1 = rRang.Item(jZ, 1).Value) And (Chat2 = rRang.Item(jZ, 2).Value) Then
                    NhapCT jZ, rRang
                End If
            ElseIf (Len(Chat1) <> 0) And (Len(Chat3) <> 0) Then    'Truong Hop Co Chat1 & Chat3
                If (Chat1 = rRang.Item(jZ, 1).Value) And (Chat3 = rRang.Item(jZ, 3).Value) Then
                    NhapCT jZ, rRang
                End If
            ElseIf (Len(Chat2) <> 0) And (Len(Chat3) <> 0) Then    'Truong Hop Co Chat2 & Chat3
                If (Chat2 = rRang.Item(jZ, 2).Value) And (Chat3 = rRang.Item(jZ, 3).Value) Then
                    NhapCT jZ, rRang
                End If
            ElseIf (Len(Chat1) <> 0) Then    'Truong Hop Chi Co Chat1
                If (Chat1 = rRang.Item(jZ, 1).Value) Then
                    NhapCT jZ, rRang
                End If
            ElseIf (Len(Chat2) <> 0) Then    'Truong Hop Chi Co Chat2
                If (Chat2 = rRang.Item(jZ, 2).Value) Then
                    NhapCT jZ, rRang
                End If
            ElseIf (Len(Chat3) <> 0) Then    'Truong Hop Chi Co Chat3
                If (Chat3 = rRang.Item(jZ, 3).Value) Then
                    NhapCT jZ, rRang
                End If
            End If
        Next jZ
        SFFUng = KQua()
    End Function
' * * * * * * * * *
PHP:
Sub NhapCT(Zj As Integer, tRang As Range)
    iDem = iDem + 1
    KQua(iDem, 1) = tRang.Item(Zj, 7).Value: KQua(iDem, 2) = tRang.Item(Zj, 8).Value
    KQua(iDem, 3) = tRang.Item(Zj, 9).Value: KQua(iDem, 4) = tRang.Item(Zj, 10).Value
End Sub

Xin giới thiệu & rất mong nhận được ~ đóng góp!
Xin Cảm ơn trước!
 

File đính kèm

  • SFFanUng.rar
    12.4 KB · Đọc: 162
Chỉnh sửa lần cuối bởi điều hành viên:
Úi trời... chưa xem file có gì nhưng cái này cho điểm 10 ý tưởng. CSDL thì chắc chỉ XD trên cơ sở Table thôi, nhưng CSDL thì nhiều quá!
Anh có thể phân nhóm kim loại theo tính kim loại, nhóm bazơ, nhóm ai xít, hóa trị để coding xem hàm có "thông minh" không.
 
Lần chỉnh sửa cuối:
adam_tran đã viết:
Anh có thể phân nhóm kim loại theo tính kim loại, nhóm bazơ, nhóm ai xít, hóa trị để coding xem hàm có "thông minh" không.
Vâng em đồng ý với ý kiến này, Nếu đi từ đặt trưng cơ bản nhất của các nguyên tố từ đó có thể tạo ra các hàm thông minh, em nghĩ nên đi từ đơn chất trước rồi sau mới tới hợp chất.
Ui trời. Em nghĩ sản phầm này mà hoàn chỉnh thì ứng dụng của nó bao la tới mức nào nữa ấy chứ.!
 
Hỏi:
Tôi làm rất nhiều phương trình phản ứng (PTPƯ) hoá học bằng Excel, chất tham gia hiển thị lần lượt trong các cột “chất 1”, “chất 2” và “chất 3”, còn chất tạo thành hiển thị trong cột “sản phẩm”. Làm thế nào để tìm một PTPƯ tương ứng với các chất trong cột “chất 1”,”chất 2” hoặc cả 3 cột, kết quả tìm được có thể cho ở bất cứ ô nào.

Đáp:
Bạn không trình bày rõ yêu cầu cần giải quyết nên chúng tôi không thể trả lời chính xác. Theo thông tin mà bạn trình bày, bạn chỉ có thông tin về các chất hóa học trong 3 cột và sản phẩm trong cột thứ 4, còn thông tin về các phương trình phản ứng hóa học sử dụng các chất hóa học này lại không được miêu tả. Không biết mỗi bộ 3 chất hóa học thành phần ở 1 hàng nào đó có thể tạo ra bao nhiêu phương trình phản ứng hóa học, cụ thể các phương trình phản ứng này như thế nào?


Giả sử bài toán được phát biểu lại rõ ràng như sau: mỗi bộ 3 chất hóa học ở 1 hàng sẽ tạo ra đúng 1 phương trình phản ứng hóa học để cho ra sản phẩm ở cột “Sản phẩm” tương ứng. Nếu biết 1 hay 2 hay cả 3 chất thành phần làm sao tìm được các PTPƯ có dùng các chất thành phần được biết, rồi hiển thị chỉ số hàng tương ứng trong bảng cho người dùng biết.

Để giải quyết bài toán được chúng tôi phát biểu lại như trên, bạn có thể viết và dùng hàm user-defined bằng ngôn ngữ VBA như sau:

Hàm tìm PTPU


Function TimPTPU(rng As Range, chat1 As String, chat2 As String, chat3 As String) As String
‘Khai báo các biến cần dùng
Dim count As Integer
Dim i As Integer
‘ tìm số hàng chứa PTPU
count = rng.count
‘duyệt xử lý từng hàng
For i = 1 To count
If (Len(chat1) <> 0) And (Len(chat2) <> 0) And (Len(chat3) <> 0) Then
‘trường hợp có cả 3 chất
If (chat1 = rng.Item(i, 1).Value) And (chat2 = rng.Item(i, 2).Value) And (chat3 = rng.Item(i, 3).Value) Then
‘tìm được, hiển thị form thông báo
MsgBox “Tìm được PTPU ở hàng “ & (rng.Row + i - 1)
End If
ElseIf (Len(chat1) <> 0) And (Len(chat2) <> 0) Then
‘trường hợp có 2 chất: chat1 và chat2
If (chat1 = rng.Item(i, 1).Value) And (chat2 = rng.Item(i, 2).Value) Then
MsgBox “Tìm được PTPU ở hàng “ & (rng.Row + i - 1)
End If
ElseIf (Len(chat1) <> 0) And (Len(chat3) <> 0) Then
‘trường hợp có 2 chất: chat1 và chat3
If (chat1 = rng.Item(i, 1).Value) And (chat3 = rng.Item(i, 3).Value) Then
MsgBox “Tìm được PTPU ở hàng “ & (rng.Row + i - 1)
End If
ElseIf (Len(chat2) <> 0) And (Len(chat3) <> 0) Then
‘trường hợp có 2 chất: chat2 và chat3
If (chat2 = rng.Item(i, 2).Value) And (chat3 = rng.Item(i, 3).Value) Then
MsgBox “Tìm được PTPU ở hàng “ & (rng.Row + i - 1)
End If
ElseIf (Len(chat1) <> 0) Then
‘trường hợp có 1 chất: chat1
If (chat1 = rng.Item(i, 1).Value) Then
MsgBox “Tìm được PTPU ở hàng “ & (rng.Row + i - 1)
End If
ElseIf (Len(chat2) <> 0) Then
‘trường hợp có 1 chất: chat2
If (chat2 = rng.Item(i, 2).Value) Then
MsgBox “Tìm được PTPU ở hàng “ & (rng.Row + i - 1)
End If
ElseIf (Len(chat3) <> 0) Then
‘trường hợp có 1 chất: chat3
If (chat3 = rng.Item(i, 3).Value) Then
MsgBox “Tìm được PTPU ở hàng “ & (rng.Row + i - 1)
End If
End If
Next i
TimPTPU = “”
End Function

Nếu bạn đặt hàm TimPTPU ở trên trong Module1 của bảng tính Excel chứa bảng số liệu các chất hóa học, thì mỗi khi muốn kích hoạt hàm này chạy từ bảng tính Excel, bạn chỉ cần chọn 1 cell trống nào đó và nhập vào công thức có dạng sau:
=TimPTPU(A1:A100,”Benzen”,””,”Oxy”)
trong đó A1:A100 xác định phạm vi dữ liệu của cột đầu tiên của bảng số liệu, nếu chất nào không cần xác định thì miêu tả chuỗi “” cho nó.
(ST)
 
Web KT
Back
Top Bottom