VBA UDF ссылка на несколько ячеек - PullRequest
1 голос
/ 22 июля 2011

Я пытаюсь создать UDF, который принимает значения из 4 выбранных ячеек и выполняет функцию с ним.Однако я не знаю, как написать функцию для распознавания значений ячеек.То, как я сейчас это написал, мне нужно ввести значение.Может ли кто-нибудь помочь мне с этой относительно простой проблемой?Это то, что у меня есть.

Function solubility(anion As String, cation As String, carbon1 As String, carbon2 As String)

EDIT

Например, я пытаюсь выбрать ячейки A, C, E и G, и они содержат значения Tf, Mi,Ch и Ch.Затем я буду использовать эти ячейки для ссылки на соответствующие значения в диапазоне, чтобы вычислить и отобразить окончательное значение.Весь код приведен ниже.

Function solubility(anion As String, cation As String, carbon1 As String, carbon2 As String)

Dim sum As Double
Dim ncavalue As Long, nanvalue As Long, ncb1value As Long, ncb2value As Long
Dim nca As Long, nan As Long, ncab As Long
Dim coeff As Range, groups As Range

'solubility groups range
groups = Worksheets("Solubility").Range("A2:A33")

'group coefficients range
coeff = Worksheets("Solubility").Range("B2:B33")

'number of groups for each group
ncavalue = Range("AE" & cation.Row)
nanvalue = Range("AC" & anion.Row)
ncb1value = Range("AG" & carbon1.Row)
ncb2value = Range("AI" & carbon2.Row)

j = 0

    For j = 0 To UBound(groups)
        If UCase(anion.Value) = UCase(coeff(j).Value) Then
            'coefficient value
            anvalue = coeff(j).Value
        End If
        If UCase(cation.Value) = UCase(coeff(j).Value) Then
            'coefficient value
            cavalue = coeff(j).Value
        End If
        If cation.Value = "[MIm]" Then
            cavalue = Range("B2")
            ncb1value = ncb1value.Value + 1
        End If
        If UCase(carbon1.Value) = UCase(coeff(j).Value) Then
            'coefficient value
            cb1value = coeff(j).Value
        End If
        If UCase(carbon2.Value) = UCase(coeff(j).Value) Then
            'coefficient value
            cb2value = coeff(j).Value
        End If
    Next j
    sum = anvalue * nanvalue + cavalue * ncavalue + cb1value * ncb1value + cb2value * ncb2value
    solubility = sum + Range("B34").Value
End Function

1 Ответ

1 голос
/ 22 июля 2011

Принимая строку 1, вызовите функцию следующим образом:

=solubility(A1, C1, E1, G1)
...