No.6ベストアンサー
- 回答日時:
No5です。
No5のマクロはスピルされたセルには対応していませんでしたが、
スピルされたセルに対応したものが、こちらになります。
下記URLにアップしました。
https://ideone.com/FT9VYb
こちらの環境ではxlookupが動作しませんので、動作確認は行っていません。
期待した動作をしないかもしれませんので、ご了承ください。
再度のご回答ありがとうございます。
コードを見て驚きました。
ちょっと勉強しただけでは思いつかないレベルで大変恐縮です。
本当にありがとうございました。
No.5
- 回答日時:
丁寧な補足ありがとうございました。
こちらでは、xlookupの機能を実現できませんので、回答を控えようかと思いましたが、事情が分かりましたので、参考資料として、回答致します。
こちらに投稿するとエラーになるので、下記URLにアップしました。
https://ideone.com/D0gBQY
当方、xlookupが実行できる環境を持っていませんので、正確な動作確認は行っておりません。
14行目に
str = Target.Formula2
がありますが、このあと、
str = "=XLOOKUP(A1,Sheet2!A1:A10,Sheet2!B1:B10)"
を一時的に挿入し、動作確認しました。
もし、エラーになる場合は、
str = Target.Formula2を
str = Target.Formula
に変えてみてください。
尚、スピル機能には対応できていません。
Sheet1のB1をダブルクリックしたケースが本件ですが、
例として、
Sheet1のC1にスピルされたデータがあり、C1をダブルクリックしても、
Sheet2のC1に移動はしません。
プログラムの大まかな流れは以下のようになっています。
1.ダブルクリックされたセルに以下の計算式があれば、処理する。
無ければ、終了。
=XLOOKUP(任意の文字列)
2.XLOOKUPの各パラメータを取得
第1パラメータは、検索用の文字列
第2パラメータは、検索範囲
Sheet2!A1:A10
のようになっている前提です。
第3パラメータは、取得範囲
Sheet2!B1:B10
のようになっている前提です。
(このシート名は第2パラメータのシート名と同じ前提です)
第4パラメータ以降は、無視します。
(検索は完全一致の前提です)
3.第1パラメータの文字で、第2パラメータのシートの、検索範囲を
検索します。
(例では Sheet1のA1:A10を第1パラメータの文字で検索します。)
一致したセルがあった場合、
第2パラメータのシートの下記セルに移動します。
セルの行:一致したセルの行番号と同じ行
セルの列:第3パラメータの取得範囲の最初の列
(例 Sheet2!B1:D10のように定義されていた場合、B列)
No.4
- 回答日時:
No3です。
>目的は達成するのですが、どうしてもxlookup関数の引数を利用したコードを知りたいです。
申し訳ございません。
当方、xlookupが動作するexcelを持っていませんので(当方office2019です)、マクロからxlookupを呼び出すことはできません。
その為、マクロからxlookupを呼び出すことを期待されているのでしたら、私の方からは回答できません。
参考までにお伺いしたいのですが、
何故、「xlookup関数の引数を利用したコード」を知りたいのでしょうか。
その理由、背景などを提示していただけると、良い回答が得られやすくなるかと思います。
御回答ありがとうございます。
例示として支店番号、支店名のデータを掲載しておりますが、実務でエクセルシート3枚のデータからxlookup関数を用いてデータ検索結果反映シートに転記させるファイルを扱っております。
列数としてはデータシート毎に15列ぐらいあります。それぞれのシートから検索結果反映シートに20項目程度xlookup関数を用いて表示したい項目を転記しております。
検索結果反映シートには甲支店の来店者数、預金残高、貸出率、回収率、ノルマ達成率等のデータがそれぞれのシートから転記されているイメージです。
その転記されている元データを修正するため、検索結果反映シートに転記されているセルをダブルクリックすることで元データに瞬時に移動し、修正作業を容易にしたいという意図です。
意図が伝わりにくくて申し訳ありません。
現在、元データを修正するため、元データシートをクリックして該当支店の行を目視で検索し、そこから該当項目が表示されている列を目視で探すということをしております。
そこで、xlookup関数を用いて検索しているのであれば、その引数を利用して修正作業が容易になるvbaコードがあるのではないかと考えるに至ったところです。
No.3
- 回答日時:
>ダブルクリックであればどのようなコードになるのか教えてもらえると助かります!
Sheet1のシートモジュールに以下のマクロを登録してください。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim code As String
Dim wrow As Long
If Target.address <> "$B$1" Then
Exit Sub
End If
code = Range("A1").Value
With Worksheets("Sheet2")
For wrow = 1 To 10
If code = .Cells(wrow, 1).Value Then
.Activate
.Cells(wrow, 2).Select
Exit Sub
End If
Next
End With
End Sub
具体的なコードを提供いただきありがとうございます!
目的は達成するのですが、どうしてもxlookup関数の引数を利用したコードを知りたいです。
よろしくお願いいたします
No.2
- 回答日時:
No1です。
>ダブルクリックであればどのようなコードになるのか~
VBAで行うのなら、シートに設定されている関数はあまり関係なく、独自に再度検索をして、該当セルをアクティブにすることになると思います。
1)ダブルクリックのイベントで処理を行うにはこんな感じ
https://vba-create.jp/vba-event-doubleclick/
2)対象セルを検索するには、
・A1セルの値をFINDメソッドで検索するか
・シート関数のMACH関数を利用して検索する
方法が考えられます。
(プリミティブにループでセル範囲を比較しても良いです)
https://learn.microsoft.com/ja-jp/office/vba/api …
https://learn.microsoft.com/ja-jp/office/vba/api …
3)検索したセルをアクティブにする
https://www.officepro.jp/excelvba/cell_select/in …
という流れで、実現できると思います。
No.1
- 回答日時:
こんにちは
セルのダブルクリックであれば、VBAのイベントに用意されているのでさほど難しくはありませけれど、シングルクリックを検知するのにはwin APIを利用することが必要になるので、それなりに面倒な処理になります。
どうしてもご質問文のままを実現したければ、以下のような方法によることになるでしょう。
https://excel-excel.com/tips/vba_151.html
https://liclog.net/mouse_event-function-vba-api/
※ 上記はクリックの検知だけなので、その位置からセル位置を割り出して・・と処理を行うことになります。
一方で、ご質問の目的を達成できれば他の方法でも良いのであれば・・
HYPERLINK関数を利用して、リンク先を検索先のセルに指定することでも可能と思います。
具体的には、Sheet1のB1セルに、
=HYPERLINK("#Sheet2!B"&MATCH(A1,Sheet2!A1:A10,0), VLOOKUP(A1,Sheet2!A1:B10,2,0))
の数式を入力することでできるでしょう。
※ 当方の環境ではXLOOKUPが使えませんので、上式はVLOOKUPに変えてあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル初心者 3 2022/02/05 18:05
- その他(Microsoft Office) 台帳シートの一連番号が別入力シートでデータを台帳に転記した時、台帳の一連番号が次の番号に変わる方法 3 2021/11/13 20:02
- Excel(エクセル) 納品書台帳の納品書番号(一連番号)が入力シートからのデータ転記で反映(表示)されるようにしたい。 1 2021/11/17 19:49
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) Excelにて、テキストボックスとコマンドボタン作り、コマンドボタンでカソールを移動させたい 1 2021/11/15 18:32
- その他(Microsoft Office) Excel関数の質問 2 2021/12/05 19:11
- Excel(エクセル) 空白行も含めてソートしたい 3 2022/02/01 23:13
- Excel(エクセル) VLOOKUPを使って多数シートからの集計について 2 2021/11/07 20:08
- Excel(エクセル) excel関数について お世話になります。上のセルに関数を入れセル右下をダブルクリックすると、関数は 4 2021/11/17 12:11
- Excel(エクセル) エクセル表作成について 5 2023/03/12 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAにて『元に戻すボタン』を作...
-
あああ..ああい..ああう とい...
-
select caseの入れ子
-
targetでクリックしたら○
-
VBAバーコード照合 バーコード...
-
vbs 文字位置を中央に
-
【Excel】列と行の最後尾にジャ...
-
B列の最終行までA列をオート...
-
マクロの「SaveAs」でエラーが...
-
ワイルドカード「*」を使うとう...
-
エクセルVBA intersect colu...
-
【Excel関数】UNIQUE関数で"0"...
-
VBA シートをコピーする際に Co...
-
エクセルで離れた列を選択して...
-
VBAマクロ実行時エラーの修正に...
-
【Excel VBA】書き込み先ブック...
-
Excel UserForm の表示位置
-
VBA 別ブックからコピペしたい...
-
「段」と「行」の違いがよくわ...
-
エクセルVBA 配列からセルに「...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あああ..ああい..ああう とい...
-
vbs 文字位置を中央に
-
select caseの入れ子
-
VBAバーコード照合 バーコード...
-
エクセルで選択したセルがディ...
-
VBAにて『元に戻すボタン』を作...
-
Excelからデータを取得する時の...
-
xlookup関数の引数を利用して検...
-
最大値が0b100である3bit同士の...
-
ASPでバイナリ(ビッグエンディ...
-
マクロにてセルに文字表示
-
半透明ブラシ重ね塗りのアルゴ...
-
エクセルVBAで、ユーザーボック...
-
再帰構造のアルゴリズムで困っ...
-
ある一定時間の最高値と最小値...
-
VBAマクロにての絶対値
-
スペース区切りのAND検索
-
アセンブラでの記述について教...
-
VBAマクロ実行時エラーの修正に...
-
B列の最終行までA列をオート...
おすすめ情報