• ベストアンサー

Excelのユーザー定義関数

シート名の一部とセルの値が一致したらLOOKUP関数をかえす関数を作成したいのですが… 例として。。。 シート名:20020301売上表、セルA1:2002/3/1の値があります。 シート名の"01"とA2の日付"1日"が一致したら、セルA2にLookup関数をかえす関数を作成したいのですが。。。 よろしくお願いします

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

疑問点を・・・ >シート名の一部とセルの値が一致したら 例にあるように、日付部分のみを比較? また、シートは1シート?Book内の全てのシート? >LOOKUP関数をかえす関数 どういうこと??? >シート名の"01"とA2の日付"1日"が一致したら、セルA2にLookup関数をかえす A2の日付"1日"はA1の誤り? 不明な点がありますが、想像して書いてみました。 A1に入力した日付の日部分と、そのシート名の日付部分が一致したらLookup関数を使う例です。 これは、B1:B31と日付を照合してC1:C30から抽出しています。 A2に =fnc照合(A1) のようにします。ご参考に。(Excel2000です) Public Function fnc照合(rg As Range)   Dim ShtName As String 'シート名   Application.Volatile   ShtName = ActiveSheet.Name   fnc照合 = ""   '日付の日(2桁表示)とシート名の日付部分を比べる   If Right("0" & Day(rg), 2) = Mid(ShtName, 7, 2) Then     'ユーザー定義関数内でLookupを使った単なる例です     fnc照合 = Application.Lookup(Day(rg), Range("B1:B31"), Range("C1:C31"))   End If End Function

rinrin29
質問者

お礼

お礼が遅くなってすみません。。忙しくて全然見る暇がなくて。。。 質問してる内容がわかりずらくて本当にごめんなさい。 このエクセルも、急いで作成するように上司に言われたんですが、結局難しいので 上司がVBで作ったんですぅ。始めからそうすれば良かったのに… でも、nishi6さんの作ってくれたユーザー定義関数でやってみます。 また、何かわからない事あったらよろしくお願いします。

関連するQ&A

  • エクセルの関数(IF関数?)について教えてください

    excelの関数についてわからず、困っています。 どのような関数を入れればよいのか、ご教授お願いいたします。   sheet1に下記のような表があり、 No 項目名 日付 1 りんご 11/1 2 バナナ  3 いちご  sheet2に No 項目名 日付 7 バナナ  8 りんご  9 パイン  という表があるとします。 sheet1に日付を入力した時に(りんごの右の11/1) sheet1の項目名と一致するsheet2の項目名の右のセルに同じ日付が入るようにさせたいです。 どのような関数を入れたらよいでしょうか。   よろしくお願いいたします。  

  • エクセルの関数

    初心者の質問で、わかりにくくてごめんなさい。 LOOKUPみたいに、参照する表から値をひっぱって くる様にしたいのですが、参照する表の値の一部にその文字があったらそれをひっぱってくる様にするにはどうしたらよいのでしょうか? 例:参照の表のセル→ABC502 となっていて、ひっぱってくるセルに「502」と入力したらその横に「ABC502」と表示したいのです。 LOOKUPだと、○○の時は××という風に、まったく同じ値じゃないとだめですよね? 質問自体がわかりにくくて大変申し訳ないのですが、教えて下さい!!

  • エクセルVBA MATCHをユーザー定義関数で使う

    ユーザー定義関数の質問です。 ある値をB列で探し、見つけたセルの行番号を取得したいのですが分かりません。 条件が一つあってそれはAの値が10以下のものは検索から除外するということです。 例 A  B 6  50 5  45 7  2 12 45 11 9 例えばBが45かつAの値が10以上であるセルの行番号はこの例だと4になります。 ワークシート関数を使うと{=MATCH(45,(A1:A5>=10)*(B1:B5),0)}でできました。しかしユーザー定義関数で.Match(45, Worksheets("Sheet1").Range("A1:A5>=10") * Worksheets("Sheet1").Range("B1:B5"), 0)とやっても#VALUE!となってしまいました。何がおかしいのでしょうか。

  • Excel関数について

    曜日毎の集計を関数を利用して組もうと考えております。 1~31日まである月を例として 月曜日 ⇒ 1日、8日、15日・・・ 火曜日 ⇒ 2日、9日、16日・・・  ・  ・ 日曜日 ⇒ 7日、14日、21日・・・ 上記のように日付と曜日がセットになるとします。 1~31日までの名称のシートがあり、各曜日毎のA1セルの値の合計を求めたいと思っています。 通常SUMで別シートのセルを指定する際は、「シート名!セル」となりますが、 別シートのセルの値をシート名として利用し指定することは可能でしょうか? 例を挙げると、「date」というシートA1からE1に、1、8、15、22、29 と日付の値が入っていて =SUM('1'!A1) を =SUM((date!A1)!A1) といった形で関数を組みたいのですが書き方がわかりません。。 こういった使用方法自体が認められていないのかもしれませんが、ご教授いただければと思います。 【環境】 WindowsXP Excel 2003

  • Excelの関数を教えてください。

    Excelの関数で例えば シートAのB行の中の値とシートBのセルA1の値、シートAのC行の中の値とシートBのセルB1の値が一致した行のF列の値を返す関数を考えているのですが、いろいろ試してもエラーになってしまいます。(B列とC列の一致する行は1つしかありません) これができないと家に帰れません;; どなたか、教えてください! よろしくお願いします。

  • エクセル関数について

    エクセルで複式簿記の為に現金元帳と預金元帳を作成しました。 現金元帳と預金元帳を参照して売上元帳を作ろうと考えています。 現金元帳と預金元帳は   A      B        C             D      E      F  日付   勘定科目   摘要(企業名など)   借方    貸方    残高  となっており1月~12月のシートを作ってあります。 売上元帳を    A         C           D        日付    摘要(企業名など)   借方(売上)   このような表にしたいのですが 企業名を検索値にして VLOOKUPで作成しようとしたのですがその場合、D列の借方(売上)金額は表示できるのですが C列の左側のA列はエラー表示になってしまいます。 LOOKUPでも試しましたが日付がすべて同じ日付になってしまいます。 どのようにしたら上手く行くのか知恵を貸してください。 因みに 現金元帳で1ファイル(12シート) 預金元帳で1ファイル(12シート) 売上元帳で1ファイル(12シート) で作成しようとしています   

  • Excel INDIRECT関数の使い方が分からない

    表という名前のSheetがあります。  A 4 1 5 2  : のように、表SheetのA4から下に連番で、    1~400まで数字がふってあります。 式という名前のSheetが式~式(399)まで、400Sheetあります。 400Sheetある式というSheetには表があり、入力されて文字は違いますが、表の配置は全く同じです。 式  のD6セルには 1。Q9セルには「あいうえお」と入力、 式(1)のD6セルには 2 Q9セルには「かきくけこ」と入力されています。 式Sheetが400枚あるので、D6セルには、400まで数字が連番で入力されています。 表SheetのA4セルが、もし空という前提で、1と入力した場合、式~式(399)までのSheetの中から一致した数字が合った場合、そのSheetのQ9のセルの値を返しなさい‥と関数を入れたいと思い、 「INDIRECT」関数を使用しました。 =INDIRECT("式(" & A4 & ")'!D6"  しかし、何度入力しても、REFと出てしまいます。 この関数を使用するのは初めてで、戸惑っています。 どうかご教授ください。

  • エクセルでユーザー定義関数を作りたい

    エクセルのVBAで、セルに「=findright(セル名,対象)」と書き込めば、その関数を書き込んだセルの右から対象を探してくれる関数を作りたいです。find関数は左から検索してしまいますよね?右から検索したいのです。 <例>セル(a2)から右から数えて何番目に★があるか? =findright(a2,"★") 標準モジュールに書き込んだあとの手順も教えていただけないでしょうか? よろしくお願い致します。

  • エクセルの関数について

    エクセルの関数について 【Sheet1】 B列・・・J列 売上日  商品名 9/12   りんご 9/12   みかん 9/12   りんご 9/14   りんご という売上表があったとして、Sheet2にJ列の項目ごとに売上日を表示できる数式を教えていただきたいです。こんな↓イメージです。 【Sheet2】 A列・・B列・・・C列・・・・ 商品名 売上日1 売上日2・・・売上日31 りんご 9/12  9/14 【Sheet1】の売上表は、売上が立つごとに入力していく表なので、 一日に同じ商品名(J列)が何度もでてきますが、同一売上日は、1回だけの表示にしたいです。 売上表は月でしめるので、毎日売れたとして、売上日は最大31日です。 【Sheet1】の売上表は、パソコンの苦手なパートの方が作成しているので、いじりたくありません。 当方あまりパソコンが得意ではないため、説明が分かりにくくて申し訳ないのですが、よろしくお願いします。

  • エクセル関数について

    エクセルの関数について質問です。 例えば、 C1セルには、数値データが入っています。 A2~A10セルに日付データ。 B2~B10セルに数値データが入っている表があります。 B11セルの値に、(C1データ)-(A列の最新日付セルと同行のB列データ)を表示させたい場合、 どのような関数を作成すればよいですか。 宜しくお願いします。

専門家に質問してみよう