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

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/04/03 09:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで種類を数える関数が無いのは何故?

エクセルで種類を数える関数が無いのは何故なんでしょうか?

エクセルで種類を数えるには、いくつかの関数を組み合わせるのが一般的ですよね?
直接数える関数が無いのは、訳があるんでしょうか?

Aベストアンサー

>>エクセルで種類を数える関数が無いのは何故なんでしょうか?

やっぱり、そういう関数が必要な方が全体からみたら少数派だと、エクセルの開発者たちが考えているからではないかと思います。
また、既存の関数を組み合わせたら、対処可能だから、無理して新しい関数を作る必要性もない、開発の優先順位が低いって判断もあるでしょうね。

私は、エクセルの表を作ったり、エクセルVBAでプログラムを作ったりしますけど、そういう関数が必要になったことが全くありませんし。

Q二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセル

二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセルの値を
別のシートに設定するには、どうしたらいいでしょうか?

[シート1]

--|A---B---C---D---E
--+---+---+---+---+---
01|A1 ???
02|A2 yyy
03|B1 ???
04|C1 sss


[シート2]
--|A---B---C---D---E
--+---+---+---+---+---
01|A1 aaa
02|A3 bbb
03|B0 xxx
04|B1 ccc
05|C1 sss



シート1 [Aのセル]とシート2の[Aのセル] を比較し、同じ値だった場合に、
シート2の [B] の値を シート1の[C]に設定するための関数はどのようにしたら良いでしょうか?

最終的に、シート1が

--|A---B---C---D---E
--+---+---+---+---+---
01|A1 ??? aaa
02|A2 yyy
03|B1 ??? ccc
04|C1 sss sss

となります。

Excelの関数あマクロは、どうしても分からなく質問させてもらいました。

申し訳ありませんが、ご教授宜しくお願い致します。

二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセルの値を
別のシートに設定するには、どうしたらいいでしょうか?

[シート1]

--|A---B---C---D---E
--+---+---+---+---+---
01|A1 ???
02|A2 yyy
03|B1 ???
04|C1 sss


[シート2]
--|A---B---C---D---E
--+---+---+---+---+---
01|A1 aaa
02|A3 bbb
03|B0 xxx
04|B1 ccc
05|C1 sss



シート1 [Aのセル]とシート2の[Aのセル] を比較し、同じ値だった場合に、
シート2の [B] の値を シート1の[C]に設定するための関数はどの...続きを読む

Aベストアンサー

一例です。
Sheet1のC1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:C,3,FALSE),"")として下方向にコピー

Qエクセルの関数で

エクセルの関数辞典を見ていたら、CUMPRINC関数というのがありました。
しかし、エクセルの「挿入」→「関数」→関数の分類で「財務」というのを選択したのですが、一覧表に載っていません。
どこに載っているのでしょうか?
どうすればこの関数を使えますか?
ちなみにシートの上でやっても関数の反応をしませんでした。

Aベストアンサー

Yahooで検索してみると、参考URLが引っかかりました。

参考になりませんか?

参考URL:http://money-sense.net/doc/20041215_224257.php

Qエクセルで、A2セルの値を同シート内(A5以降のA列)で検索し、該当セルにジャンプする方法はありますか?

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1417540469

上記のページと同様の質問なのですが、
ベストアンサーに選ばれている回答は別シートにジャンプですが、
同シートでのジャンプの方法はありますでしょうか。

どなたかご教示いただけると助かります。
何卒よろしくお願いいたします。

Aベストアンサー

とりあえずはご提示いただいた回答で
>Set Ws2 = Sheets("Sheet2")

 Set Ws2 = ActiveSheet
にするだけで良いと思います

私ならこんなマクロにします。マクロはシート名タブ右クリック→コードの表示で開く画面に貼り付けてください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim trg As Range
 If Target.Address = "$A$2" Then  
  Set trg = Range(Cells(5, "A"), Cells(65536, "A")).Find(what:=Range("A2").Value _
    , LookIn:=xlValues, Lookat:=xlWhole)
  If Not trg Is Nothing Then
   trg.Select
  End If
 End If
End Sub

Qエクセルの関数 ネスト

エクセルの関数 ネスト

エクセルの関数で、ネストさせるときがあるとおもうのですが、

関数を内側に書いたらよいのか外側に書いたらよいのか分からなくなる時があります。

エクセルの関数に関してわかりやすく書いてあるページなどありますか。

Aベストアンサー

こんばんは

Excel2003までは、ネストが7まで、2007では64までが可能です。
http://www.google.co.jp/search?hl=ja&source=hp&q=excel+%E3%83%8D%E3%82%B9%E3%83%88%E3%80%802003%E3%80%802007&aq=f&aqi=&aql=&oq=&gs_rfai=

「仕様上は可能」でも、複雑なネストは間違いが生じやすいですし、変更もしにくくなります。「出来るだけネストはしない」「適宜、中間結果をセルに出力する」という方法を採った方が、間違いが少なく、柔軟性のあるシステムになると思います。

>エクセルの関数に関してわかりやすく書いてあるページなどありますか。
関数の個別の機能ならば、Webサイトも書籍も多数あるのですが、「組み合わせて使う」というのはその場その場での発想になってしまうと思います。

Qセルの値の一致する複数のシート名をユーザーフォームのリストボックスに表示するには?

現在エクセルにて商品原価計算表を作成しています。
ユーザーフォームのリストボックスへシート名を表示して選択できるように作成していたのですが、部門別に表示できないかとの社内から意見があり困っております。(ほぼ完成前だった為)
それぞれのシートに部門記入欄を作成して、部門の一致する複数のシート名をユーザーフォームのリストボックスに表示するにはどのようなコードを入力すればよろしいでしょうか?
※シートはコピーして増やします。
※シート名は商品名です。

宜しくお願い致します。

Aベストアンサー

当方あまり詳しくなく、ご希望にそったものかはわかりませんが...

> それぞれのシートでドロップダウンリストを使用して"営業1課""営業2課"のように原価を求める部門を表示させているのですが、
>そのセルへ入力された部門毎にシート名を抜き出してユーザーフォームへそのシート名を反映させたいのです。
-------------------
ドロップダウンリストで各シートの"A1"セルに部門を入力させると仮定します。
で、
"A1"に"営業1課"と入力された"ところてん"、"からし"、"青海苔"というシートを、ListBox1へ表示。
"A1"に"営業2課"と入力された"豆腐"、"納豆"、"牛乳"というシートを、ListBox2へ表示。
"A1"に"営業3課"と入力された"にんじん"、"大根"、"白菜"というシートを、ListBox3へ表示。
で、
"ところてん"シートを例にとると、"A1"が"営業1課"から"営業2課"へ変更されたら、
"ところてん"シートは、今まで、ListBox1へ表示されていたが、変更後は、ListBox2へ表示。
という勝手な解釈をしました。

そのコードは、以下のとおりですが...私の解釈が間違っていたら、ごめんなさい。
確認のため、 MsgBox ("営業2課 シート名 = " & Worksheets(i).Name) で、例として
[営業2課 シート名 = ところてん]
と表示させるようにしました。
不要であれば、コメントブロックしてください。

-------------------
Option Explicit
-------------------
Private Sub UserForm_Initialize()
Dim i As Integer

For i = 1 To Worksheets.Count

If Worksheets(i).Range("A1") = "営業1課" Then
MsgBox ("営業1課 シート名 = " & Worksheets(i).Name)
UserForm1.ListBox1.AddItem Worksheets(i).Name

ElseIf Worksheets(i).Range("A1") = "営業2課" Then
MsgBox ("営業2課 シート名 = " & Worksheets(i).Name)
UserForm1.ListBox2.AddItem Worksheets(i).Name

ElseIf Worksheets(i).Range("A1") = "営業3課" Then
MsgBox ("営業3課 シート名 = " & Worksheets(i).Name)
UserForm1.ListBox3.AddItem Worksheets(i).Name

Else
Exit Sub
End If
Next i

End Sub

-------------------
Private Sub CommandButton1_Click()
Unload Me
End Sub
-------------------

リストボックスに表示させた後の処理は、わかりませんので、とりあえずここまで。

この処理で、よかったのですか?

当方あまり詳しくなく、ご希望にそったものかはわかりませんが...

> それぞれのシートでドロップダウンリストを使用して"営業1課""営業2課"のように原価を求める部門を表示させているのですが、
>そのセルへ入力された部門毎にシート名を抜き出してユーザーフォームへそのシート名を反映させたいのです。
-------------------
ドロップダウンリストで各シートの"A1"セルに部門を入力させると仮定します。
で、
"A1"に"営業1課"と入力された"ところてん"、"からし"、"青海苔"というシートを、ListBox1へ表...続きを読む

Qエクセル関数の解読サイトなんてありますか?

エクセル関数の解読サイトなんてありますか?

いつもお世話になっております<(_ _)>

エクセルファイルに関数の入った数式が入力されています。
セルごとに複数の関数が入っていますが、私にはちっともわかりません。

そこで質問です。
こんなとき「エクセル関数を解読」してくれるようなサイトってありませんか?

たとえば検索窓があってそこに「=SUM(S1:S13)」わからなくて困っている関数式を入力。
すると答えの別ボックスに「S1~S13までの数値の合計」と出てくるようなサイト。

それに近いサイトでも良いので知っている方がいらっしゃればぜひ、教えてください<(_ _)>

Aベストアンサー

もし、

=IF(E14="","",IF(O14="",(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1300,(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1625))

だったら、どういう文章が出て欲しいのでしょうか?

もしE14が空白だったら、
 空白、
そうじゃなかったから、
 もしO14が空白だったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1300
 そうじゃなかったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1625

って感じですか?
数式をそのまま読解したほうが解りやすくないですか?

QEXCEL LOOKUP関数で別シートをセルから参照したい

シート:集計表・4月・5月・6月・・・・3月
(4月~3月までは売上表が入っていて、表の形式はまったく同じです。)

集計表のシートにおいて、
A1にシート名を入力することによって、そのシートを使った範囲を取得したいと思ってます。
B2に =vlookup(B1,'A1'!A:B,2,0)
この場合、'A1'! は有効しませんが、何かの関数を使ってこれと同じ結果を得たいと考えています。

いろいろ検索しましたが、(検索の仕方も悪いかもしれません。)
VLOOKUP関数を使って複数列を範囲としたいので、よく出てくるINDIRECT関数はセル番地を指定する以上、無理だと判断しました・・・。

よろしくお願いします。

Aベストアンサー

=VLOOKUP(B1,INDIRECT(A1&"!A:B"),2,0)

で、どうでしょうか

Qエクセル関数を、書き写して分析できるツールはある?

タイトルの件、質問します。

エクセルの関数を分析する際に、エクセルの数式バーや、セルに入っている関数を
F2を教えて見るのでは、見にくい場合があります。

現在は、私は、メモ帳に関数をコピーして、分析したり、修正したりしています。
エクセルの機能or他ソフトで、関数を分析できるツールはあるのでしょうか??

【エクセルバージョン】
2003、2007

Aベストアンサー

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利な方法です。
そもそも計算が通っていない(たとえばカッコの対応が間違えていて,Enterしても受け付けてくれないようなミスをしている場合)には使えません。



また,数式バーの中で数式の「中」にカーソルを入れて左右の矢印キーでカーソルを動かしていったときに,「(」や「)」をまたいだ瞬間に,対応する「閉じカッコ」「始まりのカッコ」が色つきで強調表示されるのを確認しながら,カッコの対応がまちがえてないかなどを調べるのも簡易な良い方法です。


あまり使わない方法ですが,数式の中で適宜ALT+Enterを打って「セル内改行」してしまい,数式を縦に分解して書いてみるのも整理しやすい方法のひとつです。

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利...続きを読む

QExcel:LOOKUP関数を使って、右のセルの値を返したい

今までVLOOKUP関数を使っていたんですが、
どの列の値を返すのではなく、
右のセルの値を返したいときは
どういった関数を使えばいいのでしょうか?

Aベストアンサー

#4と#5です。

=IF(COUNTIF(A1:F4,G1)>1,"重複",INDEX(A1:F4,SUMPRODUCT((G1=A1:F4)*(ROW(A1:F4))),SUMPRODUCT((G1=A1:F4)*(COLUMN(A1:F4)))+1))

関数でするならこちらの方がいいかなと思います。
この数式の範囲はすべてA1:F4です。
範囲が2行目から始まるなら
=IF(COUNTIF(A2:F5,G1)>1,"重複",INDEX(A2:F5,SUMPRODUCT((G1=A2:F5)*(ROW(A2:F5)))-1,SUMPRODUCT((G1=A2:F5)*(COLUMN(A2:F5)))+1))
と、マイナス1を付け加えてくださいね。


人気Q&Aランキング