こんにちは。
一枚のsheet1のA5からE5の1行分を、別のsheet2に転記したいと思っています。
条件としては、ボタンで、sheet1で入力したC5の値をsheet2のD列から探し、探した値の右横にsheet1のA5からE5の1行分を転記したいと思っています。
イメージとしては、ある顧客にたいし、問い合わせのあった内容を、その都度データベースとして別シートに蓄積していく感じです。
ただ、sheet2のD列には、顧客の名前、Eから K列には、顧客の基本情報を入れてあるので、L列から5列ずつを1回分の問合せ内容として、sheet1に入力したものを転記、蓄積したいと考えています。
どのようなマクロをかいたらよいか、ご教授願えますでしょうか。
よろしくお願いいたします。
No.11
- 回答日時:
ANo1です。
なんだか苦戦なさっているようですので、ご参考までに、こちらでもサンプルを作成してみました。
処理方法はNo1に記した手順に沿っています。
ご質問の内容を再確認したところ、元データのC5セルの内容は顧客名と一致しているはずですが、蓄積シートの欄へコピーする内容にも含まれていますよね?
ということは、結果として、顧客名別に蓄積する行の5列おきに(記載する必要のなさそうな)顧客名が繰り返し出てくることになり、蓄積シートの効率や一覧性が若干悪くなるような気がします。
・・・などということはさておいて、以下ではどうでしょうか?
※ エラー処理等は考慮していません。
ただし、顧客リストに参照値が無い場合がありそうなので、
これだけは対応しています。
Sub Sample()
Dim dataSht As Worksheet, dbSht As Worksheet
Dim rw As Long, col As Long
Set dataSht = Worksheets("Sheet1") '元データシート
Set dbSht = Worksheets("Sheet2") '蓄積用シート
'リストから顧客行を検索
On Error Resume Next
rw = WorksheetFunction.Match(dataSht.Cells(5, 3).Text, dbSht.Columns(4), 0)
If Err.Number = 1004 Then
MsgBox "該当する顧客が登録されていません"
Exit Sub
End If
On Error GoTo 0
'記入開始列を算出
col = dbSht.Cells(rw, Columns.Count).End(xlToLeft).Column
col = Int((col + 3) / 5) * 5 + 2
If col < 12 Then col = 12
'データ(5列分)をコピー
dataSht.Range("A5:E5").Copy
dbSht.Cells(rw, col).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
No.12
- 回答日時:
ANo11です。
>C5セルではなく、B5セルの間違いでした。
No11のサンプルではC5セルの内容で探すようになっているので、実行すると「登録されていません」の連発になってしまいますね。(^_^;)
とは言うものの、B5セルもコピー範囲内なので、列の位置が違うだけで、同じことになっていませんか?
いずれにしろ、検索値を指定しているのは
WorksheetFunction.Match(dataSht.Cells(5, 3).Text, dbSht.Columns(4), 0)
のところなので、そこで正しいセルを参照するようにしてあげれば、動作すると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別sheetからの転記なのですが 2 2023/05/22 15:55
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) エクセルの日付抽出 2 2023/02/03 15:02
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) VBA Userform転記のみ編集可 1 2023/06/29 11:03
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
Excelで並び替え後にア行...
-
エクセルの時刻のカウントが出...
-
エクセル関数について
-
基準日以前のデータを範囲を指...
-
エクセルで行の高さ及び列幅の...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
Excelで任意の文字列を半角スペ...
-
エクセル関数について
-
列と行の名前(重複あり)が交...
-
複数回答のクロス集計の方法
-
検索条件に合うセルの個数を数...
-
平均変化率の信頼区間
-
Excelで複数列のデータを1列に...
-
プルダウンに【なし、平均、デ...
-
こんばんは。 VBAについて聴き...
-
EXCEL 最終行のデータを他のセ...
-
VBAで大量のファイルをシート名...
-
エクセルの主軸と第2軸の0を合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
Excelで並び替え後にア行...
-
エクセルで行の高さ及び列幅の...
-
平均変化率の信頼区間
-
急ぎ!色のついたセルを非表示...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
基準日以前のデータを範囲を指...
-
EXCELで日付を比べ3か月以内の...
-
マクロで行の高さを設定したい
-
エクセル関数について
-
文字列を比較し、相違するフォ...
-
エクセル関数について
-
excel / ピポッド 日数を出したい
-
エクセル VBA 行間隔を飛ばした...
-
時間の重複チェック
-
プルダウンに【なし、平均、デ...
-
EXCEL 最終行のデータを他のセ...
-
列と行の名前(重複あり)が交...
おすすめ情報
また、値だけを貼り付けらる場合は何らかの指定をしないといけないかと思いますが、ご教授願えますでしょうか。
よろしくお願いいたします。