
Excelについて教えていただきたいです。
おそらくマクロかVBAを使用するしかないと思うのですが、
シート1にシート2とシート3の内容を列単位で反映させたい。
しかし、シート2やシート3は今後行が増えたり減ったりする場合がある。
シート2やシート3の行が増減した場合にシート1の行が自動で増減する方法を教えてください。
例を挙げますと下記のようにしたいのです。
シート1
A列 B列 C列 D列 E列 F列 G列
1行目 名前 無関係列 無関係列 発注先 無関係列 無関係列 個数
2行目 あ A社 2
3行目 い B社 5
4行目 う A社 4
5行目 え B社 10
6行目 お C社 25
7行目 か A社 2
8行目 き B社 1
9行目 く D社 7
10行目 け F社 30
11行目 こ C社 25
シート2
A列 B列 C列 D列
1行目 番号 名前 個数 発注先
2行目 1 あ 2 A社
3行目 2 い 5 B社
4行目 3 う 4 A社
5行目 4 え 10 B社
6行目 5 お 25 C社
シート3
A列 B列 C列 D列
1行目 番号 名前 個数 発注先
2行目 1 か 2 A社
3行目 2 き 1 B社
4行目 3 く 7 D社
5行目 4 け 30 F社
6行目 5 こ 25 C社
シート2の行が増えたらシート1の6行目と7行目の間に自動で内容が追加されるようにしたい。
シート2の行が減ったら削除された行がシート1においても自動で削除されるようにしたい。
シート3の行が増えたらシート1の11行目以降に自動で内容が追加されるようにしたい。
シート3の行が減ったら削除された行がシート1においても自動で削除されるようにしたい。
マクロやVBAは使用したこともなく使い方・コードの書き方も全く分かりませんので、教えていただけると幸いです。
特にコードを書いていただけるととても助かります。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
こんにちは。
シート2とシート3を合算したのが、シート1でしょうか。
番号が連番でしょうか。
どの行を消したかを判断するのは、マクロで、出来るのでしょうか?。
(前置きはここまで)
自動的に行が増えたり減ったりする考え方をやめて
シート2の最新状態とシート3の最新状態をシート1に反映するのはダメでしょうか。
1.シート2やシート3で追加や削除の作業を終えたら…。
(当然、シート1は自動で変化しないです。)
2.シート1の2行目以下で値のあるセルを全てクリア
(セルの領域選択とDELキー)
3.シート2の2行2列目以下(データがある範囲)をコピーし、
シート1の2行1列目以下に貼り付け
4.シート3の2行2列目以下(データがある範囲)をコピーし、
シート1の空白行1列目以下(シート2の値が貼り付けられた
最終行の次の行)に貼り付け
マクロを使うなら、
シート1、シート2、シート3の各シートの最終行を算出して、
領域選択の範囲を自動で求め、その範囲ごとにコピペすることも
可能ですが…。目で見ながら確認するのもよいかと思います。
No.4
- 回答日時:
おはようございます。
ご質問を閉じないのは、VBA期待してますか?
>マクロやVBAは使用したこともなく使い方・コードの書き方も全く分かりませんので、教えていただけると幸いです。
残念ながら、
この処理は、簡単そうでなかなかですよ。
知識がなく作ってもらったコードで実行していてもすぐに、対応できないようになりそうですね。(質問を見る限り)
シート1と他のシートの列の順番が変わっていたり、、
既に皆さんのアドバイスがあるので、
///回答部分
VBAは、諦めた(基本的知識を身に付けるまで)方が良いと思います。
ショートカットキーでストレスなく確認しながら出来るのでは、と思います。
///
VBAの事に触れているので、VBAでやる場合のさわりだけ、、多分意味不明
Option Explicit
Dim MAXROW As Variant
Private Sub Workbook_Open()
Dim Sh As Worksheet
ReDim MAXROW(1 To ThisWorkbook.Worksheets.Count)
For Each Sh In ThisWorkbook.Worksheets
With Sheets(Sh.Index)
MAXROW(Sh.Index) = .Range("A1", .UsedRange).Rows.Count
End With
・
・
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim NewRow As Long, i As Long, J As Long
Dim key As String
Dim Arr_Row As Variant
If Sh.Name = "シート2" Or Sh.Name = "シート3" Then
NewRow = Sh.Range("A1", Sh.UsedRange).Rows.Count
If NewRow > MAXROW(Sh.Index) Then '挿入の場合
If Target.Columns.Count = Columns.Count Then
Application.EnableEvents = False
Arr_Row =
・
If NewRow < MAXROW(Sh.Index) Then '削除の場合
On Error Resume Next ’1行目を削除時2行目が空白の場合エラー、キーワードがない
If key = Sh.Cells(Target.Row, "B") = "" Then
J = -1
Else
J = 1
End If
key = Sh.Cells(Target.Row + J, "B") & Sh.Cells(Target.Row + J, "D") & Sh.Cells(Target.Row + J, "C")
If Sh.Cells(Sh.Selection(1).Row, Sh.Columns.Count) <> Sh.Cells(Selection(1).Row, Sh.Columns.Count).Row Then
・
シート1を考えなくてもこんな感じで、、、簡単な処理なら、説明を付け参考コードを書きますが、ちょっと無理がありますよね。
ご回答ありがとうございます。
現在、様々な方法を試行錯誤中です。
VBAがかなり難しいのは承知しているので今回は他の方法でやっていこうと思っています。
No.1
- 回答日時:
数式でもできるけど……面倒。
まずは「名前」を重複なく拾い集める。
「名前」に該当するデータを拾って表示する。
…って手順ですね。
これなら Excel よりも Access のほうが得意な分野です。
マクロとか考えなくても、標準の機能で出来ちゃいますよ。
通信教育などもありますので、そういった物を利用して覚えると良いと思います。
・・・余談・・・
ここは「代わりに作ってください」と作業依頼をする場所ではありません。
自身で作れるようにアドバイスをもらえる場所と思ってください。
もしも「作業依頼」が目的であれば、専門の業者に委託することを強く勧めます。
無責任な回答を採用して不具合が生じても自身で手直しすることもできないのでは業務に支障をきたしますよね。
また気づかずに損害が発生してもそれは質問者さん一人の責任になります。(認めた上司の責任もあるけどね)
ならば専門業者に委託して穴のないシステムを構築することの方が望ましいと思いませんか。
ご回答ありがとうございます。
現在、様々な方法を試行錯誤中です。
教えていただいた方法も試してみようと思います。
余談につきましてはその通りですね。
今後勉強していきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Excel(エクセル) Excel_マクロ_複数のシートのVLOOKUPで表示された#N/A以外に色付けをしたいです 1 2023/02/16 22:37
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) エクセルの複数ブックのシートを1つまとめたい 都道府県ごとに47ブックがあり、そのシートのデータを1 5 2022/11/15 14:57
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
このQ&Aを見た人はこんなQ&Aも見ています
-
excelで、セル内に文字が入力される毎に行が自動挿入される仕組みを作りたいのですが…
Excel(エクセル)
-
Excelで、あるセルの値に応じて行を自動挿入したい
Visual Basic(VBA)
-
エクセル 行の挿入すると別シートに行が挿入され、関数も自動更新される方法
Excel(エクセル)
-
-
4
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
5
EXCELで複数のシートを一度に「シートの保護」することはできますか?
Excel(エクセル)
-
6
エクセルのシートを同時に行削除、行挿入させて自動連動させたい
Excel(エクセル)
-
7
前年対比の計算方法について
財務・会計・経理
-
8
EXCEL 自動的に行を追加
Excel(エクセル)
-
9
エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてくだ
Excel(エクセル)
-
10
Excelに入力した個々の日付の数ヶ月前から自動で色をつける方法を教えてください。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 列検索後に該当デ...
-
Excel複数シートにあるデータを...
-
エクセルで、チェックボックス...
-
Excel 2段組み
-
シートをまたぐ条件付き書式に...
-
【条件付き書式】countifsで複...
-
マクロか関数で処理したいので...
-
ある数値に対して、値を返す数...
-
エクセルVBA データを別シート...
-
エクセルVBAで、ある文字を含ん...
-
Excelにて、ファイル内の複数シ...
-
VLOOKUP関数の引数は文字列はダ...
-
VLOOKアップ関数の結果の...
-
エクセルのマクロで重複データ...
-
【Excel】ある文字列からはじま...
-
エクセルのブック分割マクロを...
-
Excelでの並べ替えを全シートま...
-
エクセルマクロでデータ出力の...
-
Excel の複数シートの列幅を同...
-
EXCEL 関数を教えてください。...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
【条件付き書式】countifsで複...
-
エクセルの保護で、列の表示や...
-
Excelのセルの色を変えた行(す...
-
エクセルで、チェックボックス...
-
VBAで繰り返しコピーしながら下...
-
シートをまたぐ条件付き書式に...
-
Excelでの並べ替えを全シートま...
-
Excel の複数シートの列幅を同...
-
Excelに自動で行の増減をしたい...
-
【VBA】複数のシートの指定した...
-
【エクセル】1列のデータを交...
-
SUMPRODUCTにて別シートのデー...
-
Excel 2段組み
-
エクセル マクロ 標準モジュー...
-
エクセルの列の限界は255列以上...
-
excel 複数のシートの同じ場所...
-
エクセルVBAで、ある文字を含ん...
-
VLOOKアップ関数の結果の...
おすすめ情報