以下の様な表があります。
A列 B列 C列 D列
1 - [2016/01/01] [2016/02/01] [2016/03/01]・・・
2 [ID_001] あ あ あ
3 [ID_002] あ あ あ
4 [ID_003] あ あ あ
・
・
シート内の空いているところにIDと月日を入力するスペースを作り、
それぞれ[ID_002] [2016/03/01]と入力するとD3が選択されるようにするにはどのようにすればよいでしょうか?
VBAでも関数の組み合わせでも良いので、ご教授いただけますでしょうか。
宜しくお願い致します。
No.8ベストアンサー
- 回答日時:
「For …」などを直せば可能です。
レイアウトを示していただければ変更可能です。ご自分でトライするときのヒントをいくつか
・「Cells(Rows.Count, 1).End(xlUp).Row」は、A列の最後の行番号になります。
・「Cells(1, Columns.Count).End(xlToLeft).Column」は、1行目の最後の列番号になります。
たとえば、検索対象のデータが C列と 2行目にあった場合は以下のコードになります。(レイアウトは下図)
----------------------------------------------------------------
Sub 検索()
Dim 行データ As String
Dim 列データ As String
Dim 行番号 As Long
Dim 列番号 As Long
行データ = InputBox("行データを入力して下さい")
For 行番号 = 3 To Cells(Rows.Count, 3).End(xlUp).Row
If Cells(行番号, 3).Value = 行データ Then Exit For
Next
If Cells(行番号, 3).Value <> 行データ Then
MsgBox ("行データが見つかりませんでした。")
Exit Sub
End If
列データ = InputBox("列データを入力して下さい")
For 列番号 = 4 To Cells(2, Columns.Count).End(xlToLeft).Column
If Cells(2, 列番号).Value = CDate(列データ) Then Exit For
Next
If Cells(2, 列番号).Value <> CDate(列データ) Then
MsgBox ("列データが見つかりませんでした。")
Exit Sub
End If
Cells(行番号, 列番号).Select
End Sub
----------------------------------------------------------------
GooUserラックさ
●補足にも同じ内容を書き込みました●
解説をしていただき、ありがとうございます。
自分でやってみたのですが、最終列や最終行をどこに記述すればよいのかわかりませんでした。
お手数ですが、IDの入っているセルはA10からA142、日付の入っているセルはG9からX9の範囲で表がある場合の、記述の仕方を教えていただけますでしょうか。
No.9
- 回答日時:
Sub 検索()
Dim 行データ As String
Dim 列データ As String
Dim 行番号 As Long
Dim 列番号 As Long
行データ = InputBox("行データを入力して下さい")
For 行番号 = 10 To 142
If Cells(行番号, 1).Value = 行データ Then Exit For
Next
If Cells(行番号, 1).Value <> 行データ Then
MsgBox ("行データが見つかりませんでした。")
Exit Sub
End If
列データ = InputBox("列データを入力して下さい")
For 列番号 = 7 To 24
If Cells(9, 列番号).Value = CDate(列データ) Then Exit For
Next
If Cells(9, 列番号).Value <> CDate(列データ) Then
MsgBox ("列データが見つかりませんでした。")
Exit Sub
End If
Cells(行番号, 列番号).Select
End Sub
For のところを直すのですね!!!
完璧に動きました!
やりたいことができるようになり、また、勉強になりました。
感謝しております。
このたびは本当にありがとうございました!!!
No.7
- 回答日時:
B6にID ,B7に日付を入力して 選択値をB3に出力した場合の例です。
INDEX関数とMATCH関数の組み合わせた式は
添付図の最下行の式を試してください。
なお入出力セルが上記と異なれば、式中のB6とB7を修正する必要があります。
shorunさま
ご丁寧に画像の添付も頂き、ありがとうございます。
ただ、今回やりたかったことは選択値を別のセルに表示させるのではなく、
添付して頂いた画像の、D3セルを選択する(そのあと削除するため)必要がありました。
教えていただいた方法は、今後別の機会に役立てようと思います。
どうもありがとうございました。
No.6
- 回答日時:
こちらの方が使いやすいかも
--------------------------------------------------------------------
Sub 検索()
Dim 行データ As String
Dim 列データ As String
Dim 行番号 As Long
Dim 列番号 As Long
行データ = InputBox("行データを入力して下さい")
For 行番号 = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(行番号, 1).Value = 行データ Then Exit For
Next
If Cells(行番号, 1).Value <> 行データ Then
MsgBox ("行データが見つかりませんでした。")
Exit Sub
End If
列データ = InputBox("列データを入力して下さい")
For 列番号 = 2 To Cells(1, Columns.Count).End(xlToLeft).Column
If Cells(1, 列番号).Value = CDate(列データ) Then Exit For
Next
If Cells(1, 列番号).Value <> CDate(列データ) Then
MsgBox ("列データが見つかりませんでした。")
Exit Sub
End If
Cells(行番号, 列番号).Select
End Sub
--------------------------------------------------------------------
No.5
- 回答日時:
・検索時に入力した値と、セルを選択した時の数式バーの値は同じでしょうか?
・「Cells(1, 列番号).Value」を「Cells(1, 列番号).Text」にしてもダメでしょうか?(セルには日付だけが入っているんですよね。日付を検索するときは「#2016/03/01#」入力しないと一致しなくなるので「Text」にした方が良いと思います)
ありがとうございます!ValueをTextにしたところ、無事に動きました!
ところで、この検索を範囲を指定して行うことはできますか?
表の上の部分に見出しなどがあり、それがあると列データが見つからなくなってしまいます。
No.3
- 回答日時:
検索値を入れるセルを使わず「InputBox」を使った物にしました。
マクロで「検索」を実行すると、行データ([ID_002])と、列データ([2016/03/01])を入力する「InputBox」が出ますので、それぞれ入力してください。
------------------------------------------------------
Sub 検索()
Dim 行データ As String
Dim 列データ As String
Dim 行番号 As Long
Dim 列番号 As Long
行データ = InputBox("行データを入力して下さい")
For 行番号 = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(行番号, 1).Value = 行データ Then Exit For
Next
If Cells(行番号, 1).Value <> 行データ Then
MsgBox ("行データが見つかりませんでした。")
Exit Sub
End If
列データ = InputBox("列データを入力して下さい")
For 列番号 = 2 To Cells(1, Columns.Count).End(xlToLeft).Column
If Cells(1, 列番号).Value = 列データ Then Exit For
Next
If Cells(1, 列番号).Value <> 列データ Then
MsgBox ("列データが見つかりませんでした。")
Exit Sub
End If
Cells(行番号, 列番号).Select
End Sub
------------------------------------------------------
GooUserラックさま
ありがとうございます。
早速試してみたのですが、
列データが見つかりませんでした
と出てしまいます。列にはちゃんと数値が入っているのですが、
GooUserラックさまの環境では正しく選択されますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- Excel(エクセル) 【VBA】A列の指定した値と同じ行にあるD列の値を順番にコピペするマクロについて 4 2023/02/01 18:16
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- SQL Server SQL 期間内の実施数を合計したい 2 2023/03/03 22:28
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
えABのある列って
-
LEFT関数とIF関数の組み合わせ...
-
CSVファイルの「0落ち」にVBA
-
土日の列幅の自動変更を教えて...
-
エクセル 重複したデータを別...
-
VBAで別ブックの列を検索し、該...
-
最終行に合計(最終行が列によ...
-
エクセル 選択するマクロ
-
オートフィルターの複数抽出と...
-
VBAで結合セルを転記する法を教...
-
データシートビューのタイトル...
-
百マス計算の引き算作り方を教...
-
Excel2007で行の列をひとくくり...
-
アクセス 取り込み時に、桁数(...
-
エクセルマクロでオートフィル...
-
csvデータの列の入れ替えができ...
-
エクセルマクロ、アウトライン...
-
Excelの行数、列数を増やしたい...
-
エクセルでB列とD列を比較させ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
VBA
-
Excel文字列一括変換
-
エクセル 重複 隣の列 一番...
-
列方向、行方向の定義
-
Alt+Shift+↑を一括で行うには、...
-
VBAで結合セルを転記する法を教...
おすすめ情報
GooUserラック さん
はい、きれいに並んでいます。
GooUserラックさま
解説をしていただき、ありがとうございます。
自分でやってみたのですが、最終列や最終行をどこに記述すればよいのかわかりませんでした。
お手数ですが、IDの入っているセルはA10からA142、日付の入っているセルはG9からX9の範囲で表がある場合の、記述の仕方を教えていただけますでしょうか。