Excelのuserformのtextboxに入力された番号をA列から検索して
該当する行を別シートに転記するVBAを教えてください。
A列の番号は昇順で並んでおり、同じ番号は最大10回続きます。
同じ番号ならB列からE列は列ごとに同じ文字が入ります。
1行目は項目名が入り、番号は2行目からです。
Sheet1
A B C D E F G H I J K
1
2 760 z b s h い ろ は に ほ へ
3 760 z b s h と ち り ぬ る を
4 760 z b s h わ か よ た れ そ
5 761 x n d j あ い う え お か
6 761 x n d j き く け こ さ し
7 762 v m f k ぬ ね の は ひ ふ
8 762 v m f k へ ほ ま み む め
9 762 v m f k も や ゆ よ ら り
10 762 v m f k る れ ろ わ を ん
・
・
・
760番を検索・転記する場合、Sheet2 A列に下記のように転記したいです。
1行目~3行目までは空欄
4行目はSheet1 D列の文字
5行目はSheet1 E列の文字
6行目以降はSheet1 F列~K列を行列入れ替えて縦一列に
Sheet2
A
1
2
3
4 s
5 h
6 い
7 ろ
8 は
9 に
10 ほ
11 へ
12 と
13 ち
14 り
15 ぬ
16 る
17 を
・ ・
・ ・
・ ・
例えば次に762番を検索・転記する場合、Sheet2にある文字は全部削除されて
A列4行目から同じように転記したいです。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>もし検索した番号がなかった場合
>該当番号がありませんというmsgboxを表示したいのですが
>教えていただけますでしょうか。
以下のようにしてください。
No1のは破棄してください。
Private Sub CommandButton1_Click()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow As Long
Dim srow As Long: srow = 0
Dim erow As Long: erow = 0
Dim row1 As Long
Dim row2 As Long
Dim sval As String
If TextBox1.Value = "" Then Exit Sub
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
sh2.Cells.ClearContents
maxrow = sh1.Cells(Rows.Count, "A").End(xlUp).Row
For row1 = 2 To maxrow
sval = sh1.Cells(row1, "A").Value
If sval = TextBox1.Value Then
If srow = 0 Then srow = row1
erow = row1
End If
Next
If srow = 0 Then
MsgBox ("該当番号がありません")
Exit Sub
End If
sh2.Cells(4, "A").Value = sh1.Cells(srow, "D").Value
sh2.Cells(5, "A").Value = sh1.Cells(srow, "E").Value
row2 = 6
For row1 = srow To erow
sh2.Cells(row2, "A").Resize(6, 1).Value = WorksheetFunction.Transpose(sh1.Cells(row1, "F").Resize(1, 6))
row2 = row2 + 6
Next
End Sub
No.1
- 回答日時:
マクロを実行するトリガーが不明なので、コマンドボタンをクリックされた時と仮定して、作成しました。
もし、トリガーが他の場合は、プロシージャ名をそのように変えてください。
Private Sub CommandButton1_Click()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow As Long
Dim srow As Long: srow = 0
Dim erow As Long: erow = 0
Dim row1 As Long
Dim row2 As Long
Dim sval As String
If TextBox1.Value = "" Then Exit Sub
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
sh2.Cells.ClearContents
maxrow = sh1.Cells(Rows.Count, "A").End(xlUp).Row
For row1 = 2 To maxrow
sval = sh1.Cells(row1, "A").Value
If sval = TextBox1.Value Then
If srow = 0 Then srow = row1
erow = row1
End If
Next
If srow = 0 Then Exit Sub
sh2.Cells(4, "A").Value = sh1.Cells(srow, "D").Value
sh2.Cells(5, "A").Value = sh1.Cells(srow, "E").Value
row2 = 6
For row1 = srow To erow
sh2.Cells(row2, "A").Resize(6, 1).Value = WorksheetFunction.Transpose(sh1.Cells(row1, "F").Resize(1, 6))
row2 = row2 + 6
Next
End Sub
ご回答ありがとうございます。
完璧にできました!
可能であれば、もう一点教えていただきたいのですが、
もし検索した番号がなかった場合
該当番号がありませんというmsgboxを表示したいのですが
教えていただけますでしょうか。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
最近急にVBAの処理速度が遅くな...
-
「段」と「行」の違いがよくわ...
-
Excelの行数、列数を増やしたい...
-
エクセルで複数列の検索をマク...
-
バザーの列の整え方
-
VLOOKUPの列番号の最大は?
-
CSVファイルの「0落ち」にVBA
-
エクセル 任意の列数で分割する...
-
Excel VBA マクロで複数列が共...
-
エクセル マクロ 範囲指定で...
-
Alt+Shift+↑を一括で行うには、...
-
土日の列幅の自動変更を教えて...
-
【エクセル VBA】文字列(フルパ...
-
エクセルマクロの組み方
-
列方向、行方向の定義
-
VBA 空白行に転記する
-
あああ..ああい..ああう とい...
-
エクセル 上下で列幅を変えるには
-
VBAでユーザーフォームにセル値...
-
VBA シートをコピーする際に Co...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
Excelの行数、列数を増やしたい...
-
列方向、行方向の定義
-
VBA 指定した列にある日時デー...
-
エクセルマクロPrivate Subを複...
-
Excel文字列一括変換
-
エクセル マクロ 範囲指定で...
-
Alt+Shift+↑を一括で行うには、...
-
CSVファイルの「0落ち」にVBA
-
VBAで結合セルを転記する法を教...
-
エクセルで複数列の検索をマク...
-
リストからデータを紐付けしたい
-
横軸を日付・時間とするグラフ化
-
エクセルで最初の行や列を開け...
-
エクセルのソートで、数字より...
-
エクセルマクロの組み方
-
☆Excel VBAでAVERAGE関数を使う...
おすすめ情報