シート名の一部とセルの値が一致したら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二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセル

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

[シート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エクセルで、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ベストアンサー

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

> それぞれのシートでドロップダウンリストを使用して"営業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へ表...続きを読む

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)

で、どうでしょうか

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ランキング

おすすめ情報