![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
No.4ベストアンサー
- 回答日時:
sub macro1r1()
dim h as range
dim c as range
dim c0 as string
worksheets("Sheet3").cells.clearcontents
for each h in worksheets("Sheet2").range("A1:A" & worksheets("Sheet2").range("A65536").end(xlup).row)
if h <> "" then
set c = worksheets("Sheet1").range("B:B").find(what:=h.value, lookin:=xlvalues, lookat:=xlpart)
if not c is nothing then
c0 = c.address
do
worksheets("Sheet3").range("A65536").end(xlup).offset(1).value = c.value
set c = worksheets("Sheet1").range("B:B").findnext(c)
loop until c.address = c0
end if
end if
next
worksheets("Sheet3").select
range("A1:B1") = array("res", "work")
range("B2:B" & range("A65536").end(xlup).row).formula = "=MATCH(A2,Sheet1!B:B,0)"
range("A:B").sort key1:=range("B1"), order1:=xlascending, header:=xlyes
range("B:B").clearcontents
end sub
sub macro2r1()
dim Target as range
dim Crit as range
dim r as long
worksheets("Sheet3").cells.clearcontents
with worksheets("sheet1")
.range("1:1").insert shift:=xlshiftdown
.range("B1") = "myList"
set target = .range(.range("B1"), .range("B65536").end(xlup))
end with
with worksheets("sheet2")
.range("1:1").insert shift:=xlshiftdown
.range("B:B").insert shift:=xlshifttoright
.range("A1:B1") = "myList"
r = .range("A65536").end(xlup).row
with .range("B2:B" & r)
.formula = "=""*""&A2&""*"""
.value = .value
end with
set crit = .range("B1:B" & r)
end with
target.advancedfilter _
action:=xlfiltercopy, _
criteriarange:=crit, _
copytorange:=worksheets("Sheet3").range("A1"), _
unique:=false
worksheets("Sheet2").range("B:B").delete shift:=xlshifttoleft
worksheets("Sheet2").range("1:1").delete shift:=xlshiftup
worksheets("Sheet1").range("1:1").delete shift:=xlshiftup
end sub
この回答への補足
ご回答ありがとうございます。
Macro2のパターンでは希望通りに出力できました。
私の勉強不足でこちらのパターンはあまり理解できていないのですが・・・
Macro1では前回同様並び替えて出力されています。
自分でも修正チャレンジしているのですが・・・
お忙しい中ご回答ありがとうございました。
No.3
- 回答日時:
>検索結果の並び順はソートしない場合はどこを修正すれば良いのでしょうか?
#1です
#2さんへの補足に、割り込み回答
上記確認したいなら、F8で1行ずつデバックしてみてください。
どの時点でソートされているか分かります。
自分で確認しないと覚えないと思いますので。
あえて、コードは示しませんが・・・・
それでも分からない様なら、もう一度、補足でも入れてください。
No.2
- 回答日時:
方法1:ベタだけど判りやすい
sub macro1()
dim h as range
dim c as range
dim c0 as string
for each h in worksheets("Sheet2").range("A1:A" & worksheets("Sheet2").range("A65536").end(xlup).row)
if h <> "" then
set c = worksheets("Sheet1").range("B:B").find(what:=h.value, lookin:=xlvalues, lookat:=xlpart)
if not c is nothing then
c0 = c.address
do
worksheets("Sheet3").range("A65536").end(xlup).offset(1).value = c.value
set c = worksheets("Sheet1").range("B:B").findnext(c)
loop until c.address = c0
end if
end if
next
end sub
方法2:推奨・高速
sub macro2()
dim Target as range
dim Crit as range
dim r as long
with worksheets("sheet1")
.range("1:1").insert shift:=xlshiftdown
.range("B1") = "myList"
set target = .range(.range("B1"), .range("B65536").end(xlup))
end with
with worksheets("sheet2")
.range("1:1").insert shift:=xlshiftdown
.range("B:B").insert shift:=xlshifttoright
.range("A1:B1") = "myList"
r = .range("A65536").end(xlup).row
with .range("B2:B" & r)
.formula = "=""*""&A2&""*"""
.value = .value
end with
set crit = .range("B2:B" & r)
end with
target.advancedfilter _
action:=xlfiltercopy, _
criteriarange:=crit, _
copytorange:=worksheets("Sheet3").range("A1"), _
unique:=false
worksheets("Sheet2").range("B:B").delete shift:=xlshifttoleft
worksheets("Sheet2").range("1:1").delete shift:=xlshiftup
worksheets("Sheet1").range("1:1").delete shift:=xlshiftup
end sub
この回答への補足
早速のご回答ありがとうございます。
非常に助かります。
再度の質問で申し訳ありません。
検索結果の並び順はソートしない場合はどこを修正すれば良いのでしょうか?
No.1
- 回答日時:
VBAは組めるものとして、間単に内容説明します。
最初にSHEET3クリア
次に、SHEET1の最終行求めます
Range("A1").End(xlUp)で最終行なのでその値まで繰り返せば
VLOOKUP関数を式にしてください。
範囲はSHEET2(値はTRUE)
FOR~NEXT(最終行)
出力が出せますので、それをSHEET3に出力してください。
その後に
その出力されたものを重複削除し、並べ替えをすれば普通に出る
と思います。
考え方はこの順番です。
VBAはこの考え方で組めます。
サンプルコードについての要求はなようなので、考え方のみ回答し
ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- Visual Basic(VBA) VBAでvlookup関数から、別シート参照するやり方・・・ 2 2022/11/14 18:49
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
今の日本に期待することはなんですか?
目まぐるしく、日本も世界も状況が変わる中、あなたが今の日本に期待することはなんですか?
-
あなたなりのストレス発散方法を教えてください!
自分なりのストレス発散方法はありますか?
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(UWSC)エクセルのセルの値を読...
-
IPアドレスを検査する関数
-
マクロの「SaveAs」でエラーが...
-
「段」と「行」の違いがよくわ...
-
Excelで、あるセルの値に応じて...
-
VBA 別ブックからコピペしたい...
-
VBAマクロ実行時エラーの修正に...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで離れた列を選択して...
-
結合されたセルをプルダウンの...
-
特定の文字がある行以外を削除...
-
B列の最終行までA列をオート...
-
Excel VBAでのWorksheet_Change...
-
URLのリンク切れをマクロを使っ...
-
マクロ1があります。 A1のセル...
-
vbaで指定したセルより下の行を...
-
Cellsのかっこの中はどっちが行...
-
特定の色のついたセルを削除
-
Excel グラフのプロットからデ...
-
エクセルのセルに指定画像(.jpg...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(UWSC)エクセルのセルの値を読...
-
VBA-指定した範囲で重複しない...
-
DHCPサーバで複数のレンジを指...
-
IPアドレスを検査する関数
-
EXCEL VBA 別シートの文字を...
-
【Excel2002VBA】Destinationを...
-
MATLABによる整定時間の求め方
-
VBAでオートフィルができません
-
VBA Excel
-
ExcelのVBAで教えてください。 ...
-
「段」と「行」の違いがよくわ...
-
マクロの「SaveAs」でエラーが...
-
別ブックをダイアログボックス...
-
VBAマクロ実行時エラーの修正に...
-
B列の最終行までA列をオート...
-
エクセルで離れた列を選択して...
-
VBA シートをコピーする際に Co...
-
【Excel関数】UNIQUE関数で"0"...
-
Cellsのかっこの中はどっちが行...
-
Worksheets メソッドは失敗しま...
おすすめ情報