エクセル97を使っています。
Sheet1に既に作られた顧客のデータをSheet2の表に挿入したいのですが、
データシートは1行で1名分なのに対し、表シートは2行で1名分になっています。例えば、
Sheet1 の A1 が Sheet2 の A1 に入り、
Sheet1 の A2 が Sheet2 の C1 に入り、
Sheet1 の A3 が Sheet2 の A2 に入り、
Sheet1 の A4 が Sheet2 の B2 に入り・・・
といった具合に、Sheet1と2では項目もバラバラです。
= の前に ' を付けて後で区切り位置で変換する、という方法を以前こちらで教えていただいたのですが、うまくマクロを作ることが出来ません。
更に、顧客データの数の変動が激しいので、表シートの行数をデータの数の分だけ自動に増やしたいのですが、やり方が見つかりません。
すみませんが、どなたかアドバイスをお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
具体的に「sheet1データ」と「sheet2表」との関連づけがよく分かりませんので何とも言えないのですが。
こちらの勝手な想像ですが、sheet1に入力したデータを元に、sheet2の印刷用の表等を作成すると言うことで考えると、 sheet1の項目とsheet2表の位置関係はバラバラではなく、有る一定のルールが有ると思うので、そのルールで、sheet1のデータを読み込んで、sheet2の表に順次転記する様なマクロを考えればよろしいのではないのでしょうか。
No.2
- 回答日時:
質問の意味がつかみ切れないため、かなり想像しての回答です。
要は1行のデータを2行に振り分ければいい?>Sheet1と2では項目もバラバラです
とありますが、顧客単位では振り分け方法は同じとしています。パターンがなければお手上げです。また、
>データシートは1行で1名分なのに対し、表シートは2行で1名分になっています
とありますが、質問の例示では4名分が2行になっているように思えます。Sheet1のA1、A2、A3、A4はA1、B1、C1、D1として考えています。これが違っていれば下記モジュールは破棄して下さい。また、
>更に、顧客データの数の変動が激しいので
は、データの追加のことだと解釈しました。下記で一応対応できます。しかしシート1で行削除してもシート2は変化しません。シート2をクリアして全件書き直せば大丈夫でしょう。
下記マクロにはdtNumに項目数を、Sht1Adr、Sht2Adrに項目数分のセルの対応を設定します。
標準モジュールに貼り付け、シート1のシート2に振り分ける開始行を選択して実行します。全件書き出すなら1行目を選択して実行します。
ご参考に。
Public Sht1Adr() As String 'Sheet1のセル位置(1行目)
Public Sht2Adr() As String 'Sheet2のセル位置(1行目と2行目)
Public Const dtNum = 4 'データ項目数をセットする
'シート2に振り分けるシート1の開始行を選択して実行
'=== シート1の1行目を選択していれば全件振り分け
'=== シート1の追加開始行を選択していればシート2に追加
'=== 削除は対応していないので、いつも全件振り分けがベストか
Public Sub Sheet1_To_Sheet2()
Dim ws1 As Worksheet, ws2 As Worksheet 'シート1、2
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
ReDim Sht1Adr(dtNum) As String 'シート1の1行目のデータ位置
ReDim Sht2Adr(dtNum) As String 'Sht1Adr()に対するシート2の位置
Sht1Adr(1) = "A1": Sht2Adr(1) = "A1" '==シート1のA1をシート2のA1に書く
Sht1Adr(2) = "B1": Sht2Adr(2) = "C1" '==シート1のB1をシート2のC1に書く
Sht1Adr(3) = "C1": Sht2Adr(3) = "A2"
Sht1Adr(4) = "D1": Sht2Adr(4) = "B2" '以下、データ項目数分書き込む
'Sht1Adr(5) = " 1": Sht2Adr(5) = " 2" ' ↓
Dim rwStart As Long 'シート2に振り分けるシート1の開始行
Dim rw As Long 'シート1の行
Dim col As Integer 'シート1の列
rw = Selection.Row
While Cells(rw, 1) <> "" 'シート1のA列にデータがあるだけ繰り返す
For col = 1 To dtNum
ws2.Range(Sht2Adr(col)).Offset(rw * 2 - 2, 0) _
= ws1.Range(Sht1Adr(col)).Offset(rw - 1, 0)
Next
rw = rw + 1
Wend
End Sub
質問が下手で大変申し訳ありませんでした。
丁寧にご回答を頂き、ありがとうございました。
作って頂いたマクロをそのまま貼り付けて、必要個所を直して実行してみたのですが、うまくいきませんでした。
まだマクロは初心者なので、もう少し勉強してからまた改めてご質問させて頂きたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Visual Basic(VBA) このプログラムなんですがsheetにデータを置いて表示できるようにしてありますがsheetに101を 2 2023/02/23 20:13
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) Excel 売上管理シートに入力した売上データを、日報に自動反映させたいと考えています。 売上管理シ 3 2023/04/29 18:08
- Excel(エクセル) Excelで日報を自動で作成したい 売上管理シートに入力した売上データを、日報に自動反映させたいと考 1 2023/04/29 18:07
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- その他(Microsoft Office) オフィス365のエクセル 3 2023/06/29 13:10
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
エクセルで複数のシートに画像...
-
Accessのテーブルを既存のExcel...
-
特定のシートのみ再計算させな...
-
Wordで差し込み印刷時に表示す...
-
ワークシートそのものの色を変...
-
EXCELの「シートの見出し」のフ...
-
accessへエクセルの複数のシー...
-
EXCELの図形(テキストボックス)...
-
PowerQueryで行数の指定はでき...
-
エクセルでシートを追加したと...
-
【ExcelVBA】マクロの入ったシ...
-
エクセル 非表示のシートをハ...
-
エクセルのシート連番の振り直し
-
エクセル、特定のシートにパス...
-
エクセルを開くとメニューバー...
-
SUMIF関数【複数のシート...
-
【Excel VBA】コンボボックスで...
-
指定したシート名以外を非表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
エクセルでブック内の倍率がバ...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルの2つのシートを並び...
-
EXCELの図形(テキストボックス)...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
特定の複数のシートに同じ処理...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
エクセルで、シートの名前を変...
-
エクセルでリンク貼り付けした...
-
エクセル、特定のシートにパス...
-
accessへエクセルの複数のシー...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
おすすめ情報