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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
エクセルで離れた列を選択して...
-
Excelの行数、列数を増やしたい...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
Excel文字列一括変換
-
列方向、行方向の定義
-
エクセルで複数列の検索をマク...
-
データシートビューのタイトル...
-
EXCELを最大にて開いた際、特定...
-
エクセルでセル12個間隔で合...
-
リストからデータを紐付けしたい
-
Excel/VBA ステップインと通常...
-
エクセル マクロ 範囲指定で...
-
列を1つずつ非表示にしたい
-
エクセルグラフで0が表示される
-
Excel 区切り位置指定ウィザー...
-
VBA
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
列方向、行方向の定義
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
エクセル マクロ 範囲指定で...
-
エクセルで最初の行や列を開け...
-
エクセルのソートで、数字より...
-
エクセルマクロの組み方
-
エクセルで複数列の検索をマク...
-
データシートビューのタイトル...
-
Excel文字列一括変換
-
VBAで結合セルを転記する法を教...
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
CSVファイルの「0落ち」にVBA
-
エクセル 重複 隣の列 一番...
-
横軸を日付・時間とするグラフ化
おすすめ情報