• ベストアンサー

ユーザー定義関数で、選んだセルの下のセルの参照方法

簡単なユーザー定義関数を作っています。 Function TEST(氏名) TEST = End Function 氏名のセルを選んで、その下のセルの値を参照したいのですが、どのようにしたら良いのでしょうか? OFFSET関数を使いたくも、選んだ氏名のセルをどう使うのかわかりません。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • emaxemax
  • ベストアンサー率35% (43/121)
回答No.1

Function TEST(ByVal 氏名 As Range) TEST = 氏名.Offset(1, 0) End Function でいかがですか? ワークシートで=TEST(A1)と入力すればA2セルを参照します。

toshi-xx
質問者

お礼

emaxemaxさん、素早い回答をありがとうございます。 はい、見事にやりたいことが出来ました。 初めてここを使いまいしたが、感謝感激です。

関連するQ&A

  • EXCEL:ユーザー定義関数で、すぐ上のセルの参照

    簡単なユーザー定義関数を作っています。 Function TEST2(ByVal 氏名 As Range, 数 As Range, 累計 As Range) If 氏名 = 氏名.Offset(-1, 0) Then TEST2 = 累計 + 数 Else TEST2 = 数 End If End Function 氏名が同じなら、累計計算をしたいのですが、累計は、求めたいセルのすぐ上なんで、 指定せずに、関数の中で参照出来るのではないかと思うのですが、良い方法はないで しょうか? 宜しくお願いします。

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

  • Excelユーザー定義関数が書き込まれているセルアドレス

    Excelのユーザー定義関数で、自分自身が書き込まれているセルのアドレスって取得出来るのでしょうか? 例えば、 Function test(MyString As String) As String test = "入力された文字は、「" & MyString & "」です" End Function とユーザー定義関数を作り A1のセルに =test("てすと") と書くと 入力された文字は、「てすと」ですと出てきます。 そこで、ユーザー定義関数のなかで、ユーザー定義関数を呼び出した式が入力されている(上記の例ですと、「A1」)アドレスを取得する方法ってありますか? どなたか、詳しい方いらっしゃいましたら教えてください。

  • ユーザー定義関数でシート名を取得したい

    例えば、以下のユーザー定義関数で Public Function Test(A As Range) Test=A.Address End Function AにアクティブシートのセルA1~セルB2を指定すると「$A$1:$B$2」という値が帰ってきますが、 別のシートのセルA1~セルB2を指定しても、「$A$1:$B$2」という値が帰ってきます。 シート名が抜けてしまっているのですが、シート名はどのようにしたら取得できますか?

  • VBAでのユーザ定義関数の返り値

    VBAでのユーザ定義関数の返り値をエクセルのセルに表示させる際、 色を変更して表示するにはどうすれば良いのでしょうか? つきのような関数のerrorの時だけ赤色にしたいのです。 functin test(ss as double) if ss >10 then test=ok else test =error! end if end function

  • エクセルユーザー定義関数(1)

    エクセル初心者です。 複数のセル範囲(例えばRange("A1:A100"))を入力させ、入力されたセル範囲すべてのセルを3乗した総和を求めるユーザー定義関数は作ること可能でしょうか? Function Y(a As Range) As Variant ここに、aで選択されたセル全てを3乗して総和を求める関数Yを定義したい。 End Function よろしくお願い致します。

  • ユーザー定義関数の再計算

    ユーザー定義関数を作りました。 ところが、この関数が自動再計算をしてくれません。 どうしたら自動再計算するようになるのでしょうか? よろしくお願いします。 ちなにこの関数は、自分のシートのB2とsheet1~sheet4のB9を比較して、正しければB9の4つ右のセルの値を合計して返すものです。 =SheetLook($B$2,"sheet1,sheet2,sheet3,sheet4",B9,4) コードです。 Function SheetLook(参照元 As Variant, 比較対象シート As String, 比較対象セル As Range, 参照セル位置 As Integer) As Variant   Dim i As Integer   Dim rng As Range   Dim sss As Variant   Dim kei As Variant   Dim cnt As Integer   sss = Split(比較対象シート, ",")   kei = 0   cnt = 0   For i = 0 To UBound(sss)     Set rng = Sheets(sss(i)).Range(比較対象セル.Address)     If 参照元 = rng Then       kei = kei + rng.Offset(0, 参照セル位置)       cnt = cnt + 1     End If   Next   If cnt <> 0 Then     SheetLook = kei   Else     SheetLook = ""   End If End Function

  • Excelで一つ下のセルを関数で、かつ可視セルで

    Excelの関数についての質問です。 一つ下のセルを関数で参照したいのですが、 その場合、フィルターで非表示となったセルも参照されてしまいます。 ※OFFSET関数だとそうなります。 そこで質問です。 可視セル限定で一つ下のセルを参照する方法はありませんでしょうか。 よろしくお願いします。

  • ExcelのVBAでセルに指定したユーザ関数につい

    ExcelのVBAのユーザ関数について 例えば、 Excelのあるセル、例えば、C1セルの値を引数として、「Function 練習()」 という、ユーザ関数に渡します。 関数内では、引数で渡されてきた値のセル番号を判断し、その次のセルに 値を設定します。 つまり、C1セル(1,4)の値をわたしているので、D1セル(1,5)に値を 設定したいのですが、うまくいきません。 「1つ以上の循環参照が発生しています。循環参照とは、数式が直接的 または間接的に自身のセルを参照している状態を指します。これにより、 計算が正しく行われない可能性があります。 循環参照を削除または変更するか、数式を別セルに移動してください。」 が最初に表示されますが、その後、期待した結果になっていません。 何が起きていて、何がたりないのでしょうか。 よろしくお願いします。 ■内容 A B C D 1 111 222 あ =練習(C1,"-") 2 333 444 い 3 555 666 う 4 777 888 え 5 999 000 お ■関数 Function 練習(myTar As Range, word As String) As String If Len(myTar) = 0 Then 練習 = "" Exit Function End If On Error GoTo era CurRow = myTar.Row CurCol = myTar.Column MsgBox CurRow & ":" & CurCol & ":" & Cells(CurRow, CurCol) Cells(CruRow, CurCol + 1) = "a" 練習 = "○" Exit Function era: 練習 = "#VALUE!" End Function

  • ユーザー定義関数が入力されたセルを調べたい

    Excel でユーザー定義関数を作成し、アドインにして仕事で使っています。 これらの関数を使用したブックを外部に配布する時にユーザー定義関数を値に変換してから配布したいのですが、ユーザー定義関数とワークシート関数の区別の方法が判りません(外部にアドインは配布しません)。 Dim r As Range Dim f As String For Each r In Activesheet.UsedRange If r.HasFormula Then f = r.Formula Do ' f がユーザー定義関数の一覧の中に見つかれば、セル r の色を変えてループ脱出 Loop End If Next という方法を試みましたが、UsedRange の大きさやユーザー定義関数の数が多いことも影響して結構な時間が掛かってしまいます。 ユーザー定義関数とワークシート関数を区別する方法があれば、Do~Loop を回さなくて済むので、時間短縮できるのではないかと考えています。 よろしくお願いします。

専門家に質問してみよう