エクセルのユーザ関数についての質問です。

横に、下記のように A,B,C のどれかに1がたっています。
Aに1だったら1、 Bに1だったら、2、Cに1だったら3にしたいのです。こういったユーザ関数はどうやって
書くといいのでしょうか?
A1,B1,C1
1,,
,,1
,1,

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/11/09 08:11:05
  • 終了:2007/11/16 08:15:03

回答(3件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/11/09 08:34:15

ポイント27pt

ABCが全部1だったらどうなるかとかは、適当に改良してもらうとしてユーザー定義関数の書き方です。

http://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html


Function UserMacro(A1 As Range, B1 As Range, C1 As Range) As Integer
    If A1.Value = 1 Then
        UserMacro = 1
    End If
    If B1.Value = 1 Then
        UserMacro = 2
    End If
     If C1.Value = 1 Then
        UserMacro = 3
    End If
End Function
id:j1960 No.2

j1960回答回数322ベストアンサー獲得回数212007/11/09 08:59:57

ポイント27pt

単純にこういう方法でいかがでしょうか?

function abc(a,b,c)

abc=a+b*2+c*3

end function

http://www.excel.studio-kazu.jp/lib/e1iw/e1iw.html


使う時は、セルに以下の式を記述すればOKです。

=abc(A1,B1,C1)

id:SALINGER No.3

SALINGER回答回数3454ベストアンサー獲得回数9692007/11/09 10:24:48

ポイント26pt

問題の意図が、A列に1、B列に1、C列に1があった場合ということなら

Function UserMacro(target As Range) As Integer
    Dim i As Long
    For i = 1 To target.Rows.Count
        If Cells(i, 1).Value = 1 Then
            UserMacro = 1
            Exit Function
        End If
    Next i
    For i = 1 To target.Rows.Count
        If Cells(i, 2).Value = 1 Then
            UserMacro = 2
            Exit Function
        End If
    Next i
    For i = 1 To target.Rows.Count
        If Cells(i, 3).Value = 1 Then
            UserMacro = 3
            Exit Function
        End If
    Next i
End Function

として数式に =UserMacro(表全体を選択) とすればいいです。

http://q.hatena.ne.jp/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません