• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel:行列入替の2つのDBを常に双方向で同期)

Excelの行列入替を双方向で同期する方法

eden3616の回答

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.6

以下の方法のうち、 ・エリアを決め込む方法 ・変更があるたびに対象範囲を行列入替でコピーし直す方法 前者は処理速度は格段にあがりますが、行削除・入替に対応できないため後者で作成し直しました。 以下のVBAコードと入れ替えて使用してください。 ■VBAコード Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 'On Error GoTo era '型宣言 Dim myRng As Range Dim mySt(1) As Worksheet Dim myDb(1) As Range Dim myArea(1) As Range Dim myRow As Long Dim myCol As Long Dim flag As Integer Dim myBas As Range Dim myBef As Range 'DB範囲設定(基準位置設定) '1つ目のデータベースを設定 Set mySt(0) = Sheets("Sheet1") Set myDb(0) = mySt(0).Range("A1") '2つ目のデータベースを設定 Set mySt(1) = Sheets("Sheet2") Set myDb(1) = mySt(1).Range("A2") '対象シート判定 Select Case ActiveSheet.Name Case mySt(0).Name   flag = 0 Case mySt(1).Name   flag = 1 Case Else   flag = -1 End Select If flag = -1 Then Exit Sub '基準セルを記憶 Set myBas = myDb(flag) '最大変更範囲取得 Set myArea(0) = mySt(flag).Range(myDb(flag), myDb(flag).SpecialCells(xlCellTypeLastCell)) '反転コピー Application.EnableEvents = False Application.ScreenUpdating = False Application.Calculation = xlCalculationManual flag = Int((2 - flag) / 2) mySt(flag).Activate Set myBef = Selection Set myArea(1) = mySt(flag).Range(myDb(flag), myDb(flag).SpecialCells(xlCellTypeLastCell)) myArea(0).Copy myArea(1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True myBef.Select mySt(Int((2 - flag) / 2)).Activate GoTo owari: era: MsgBox "エラー番号:" & Err.Number & vbCrLf & "エラー内容:" & Err.Description owari: Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Application.EnableEvents = True End Sub

amichan777
質問者

お礼

ありがとうございます!!! 動作確認致しました! ・行や列の削除、入替え ・行や列、或いはDB全体のその場でのコピペ ・関数の入ったセルの動作も問題なく 全てがスムーズに行える様になりました。 この度は長期間に渡り、何度も最後までお助け頂きありがとうございました。 社内ではエクセルDBが推奨されており、 ご教示頂いた内容は全社的に横展開して活用して行こうと思います。 本当にありがとうございました。

関連するQ&A

  • Excel:別々のセル間のデータを常に双方向で同期する方法

    Excel:別々のセル間のデータを常に双方向で同期する方法 一つのエクセルファイル内の別々のシートにあるセルの一方にデータを入力すると他方にも同時に入力されるようにするにはどうすればいいでしょうか。 一方通行ではなく、どちらのセルに入力しても他方に同じ内容が入力されるようにする具体的な方法を知りたいです。 また、データを入力した後いつでもどちらかのセルの内容を訂正しても他方のセルにそれが反映されてほしいです。 使用しているのはWin XP homeでエクセル2003です。 具体例をあげます。 シート1のセルE4に「100」と入力すると、シート2のセルF9にも「100」と入力される。 その逆のシート2のF9に先に「100」と入力してもシート1のセルE4に「100」と入力される。 また、シート2のF9に「100」と入力しシート1のセルE4にも「100」と自動で入力された後、シート1のセルE4に「200」と訂正するとシート2のF9も同時に「200」と訂正されてほしいのです。 もし上記が可能でしたら、別々の3枚のシートにある別々の3個のセルでも同じように、どれかのセルにデータを入力すると他の2つのセルにも同じデータが入力されるようにできるのかを知りたいです。これも一方通行ではなく、3つのセルのどれに入力しても他の2つに同じデータが入力されてほしいです。 もし当方が望むことができないようなら、どういう理由でできないのかも知りたいです。 上記質問に対する的を射た答えでなくとも関係のありそうなことやヒントになりそうなこともお教えください。 参考になりそうなサイトがありましたら、どの部分が参考になるのかを示した上でURLを教えてください。 当方の質問が下手で意味が伝わりにくいようでしたら、ご指摘いただければできるだけ詳細に追記する所存です。 ご回答いただいた内容に対してさらに質問するかもしれません。 どうぞよろしくお願いいたします。 最後まで読んでいただきありがとうございました。

  • 行列の入れ替え

    次の処理を行うプログラムを書きたいのですが教えていただけないでしょうか? (処理) B列のあるセルの値が2000または2001の場合、当該行のc列からn列までのセルをコピーし、11行を挿入し、行列を入れ替えて貼り付ける。 この処理を繰り返したいです。             (処理前) A  B  C  D  E  F  G   H  I  J  L  M  N  O 1 2000  1  2  3  4  5  6  7  8  9  10  11  12 2 3 4 5 6 7 8 9 10 11 (処理後) A  B  C  D  E  F  G  H  I  J  L  M  N  O 1  2000  1 2      2 3      3 4      4 5      5 6      6 7      7 8      8 9      9 10     10 11     11 12     12 13     13 よろしくお願いします。

  • エクセルのマクロについて教えてください

    エクセルで、その行の中に赤色のセルがある場合は、その行のA列のセルに"○"を入れるというのは、マクロで書く場合はどのように書けばよいでしょうか。 行は1~100まで、列はA~Zまであります。赤色のセルはB列~Z列の所々に点在します。

  • エクセル 関数を使わずにデータを取りたい

    EXCELを使ってデータ入力をしたいです。 下の図のように、シート1のA列にコードを入力すると、シート2のテーブルから値を引っ張ってくるようにしたい。 たとえば、シート1のA1に"C001"を入力したら、B1に"赤"が自動入力されるようにしたい。 シート1 A列 B列 行1 C001 シート2 A列 B列 行1 C001 赤 行2 C002 青 行3 C003 黄色 ただし、シート1のB列の値は、入力後に編集するため、ここには計算式を入れたくないのです。 なので、通常ならばB列にVLOOKUP関数を使えばすむことですが、計算式を入れずに上記を実現する方法を教えてください。

  • (エクセルマクロ)複数の一連作業をマクロで行う処理について

    以下の一連の処理についてマクロのコードを一式で教えてください。 【エクセルの構成】 1.シート名 日付だけ都度変更する形式 (例:YYYYMM_教えてGoo) 2.表 列 AからAAまでデータあり 行 1行目はタイトル。2行目以降からデータ。 【処理手順】 1.表全体のフォントを「MS Pゴシック フォント9」にする。 2.1行目から11行目と13行目を削除 3.A列とD列削除 4.一行目の項目行にオートフィルタを設定 5.ウインドウ枠の固定(先頭行(一行目の項目行)の固定) 6.H列に文字が入ってる行のみ削除 7.E列とF列を昇順に並び替え(優先順位は(1)F列、(2)E列) 8.データの最終行の次の行のU列からZ列に表を入れる。 (例)5行目が最終データ行の場合  A…U V W X Y Z 1 ・ 5   6 A =SUM() 7 B 8 C     =SUM() (書式設定と詳細) セルU6 「文字列A」と入力し、背景は黄色、文字色は赤 セルV6 背景は黄色、文字色は赤 セルW6 背景は黄色、文字色は赤 セルX6 背景は黄色、文字色は赤 セルY6 背景は黄色、文字色は赤 セルZ6 数式入力(=SUM(Z$2:Z5(最終行))、背景は黄色、文字色は赤 セルU7 「文字列B」と入力し、背景は黄色、文字色は赤 セルV7 背景は黄色、文字色は赤 セルW7 背景は黄色、文字色は赤 セルX7 背景は黄色、文字色は赤 セルY7 背景は黄色、文字色は赤 セルZ7 背景は黄色、文字色は赤 セルU8 「文字列C」と入力し、背景は黄色、文字色は赤 セルV8 背景は黄色、文字色は赤 セルW8 背景は黄色、文字色は赤 セルX8 背景は黄色、文字色は赤 セルY8 背景は黄色、文字色は赤 セルZ8 数式入力(=SUM(Z6:Z7)、背景は黄色、文字色は赤 すべて掛け線なし 9.データ最終行(表も含む)から5行目全体をグレーにし、その行のA列に「データA」と入力。 10.I列に文字が入ってる行のみを切り取り、一番最後にデータが入ってる行から6行目(「データA」と入力した下の行から) から貼り付ける。(切り取った行は行削除し、上詰め) 11.データ最終行(切取貼り付けしたデータAを含む)から3行目全体を黄色にし、その行のA列に「データB」と入力。 12.X列の前に列を挿入し、挿入した列の一行目(項目行)に「タイトル」と記入。 13.挿入した列の2行目から前の列(W列)にデータが入ってる行まで数式(=ROUND(W2/1.05,0)※2行目に入力した場合)をコピー。 14.セルAB1に「No.」と記入。 15.G列からW列とY列からAA列を非表示にする。 6と8以降からマクロの自動記録ではできませんでした。 ご教授お願いします。

  • [Excel]複数のシートで内容の同期を取る

    1つのブックで複数のシートを管理しているファイルがあります。 あるシートの列の内容を別のシートの列と同期させたいと思っています。例えば、シート1のA列の内容とまったく同じものをシート2のE列に表示させたいと考えていますが、この方法を教えてください。 この場合、シート1の内容を変更したら、自動的にシート2には同期が取れているようにしたいです。 また、できればシート2の列は変更できないようにできればと思っています。 お手数ですが、教えて頂ければと思います。

  • 【EXCEL2003】8つの条件がある書式設定のVBAの書き方

    VBAの書き方について御教授ください! 複数のシートに、入力値が決まっているA列とC列があります。 その入力値の組み合わせによって、入力時にA:Cのセル書式を以下のように8通りに変えたいです。 マクロの自動記録しか経験がなく調べたのですがよくわかりませんでした。 よろしくお願いいたします。 1.A列「あ」・C列なし→セル背景:黄 2.A列「あ」・C列「ア」→セル背景:黄 フォント:青 3.A列「あ」・C列「イ」→セル背景:黄 フォント:赤 4.A列「い」・C列なし→セル背景:緑 5.A列「い」・C列「ア」→セル背景:緑 フォント:青 6.A列「い」・C列「イ」→セル背景:緑 フォント:赤 7.A列なし・C列「ア」→フォント:青 セル背景:なし 8.A列なし・C列「イ」→フォント:赤 セル背景:なし

  • エクセル Excel 関数or条件付き書式

    あけましておめでとうございます(*^_^*) 新年早々教えてください! セルに指定された値(文字列)を入力すれば 自動で別のシートの別のセルの書式が変更される (あるいは関数により自動で値が入力される) 方法を探しています! エクセルマスターの方お願いします! 【具体的に…】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10の 書式が 自動変更される(例-フォントが赤になる) もしくは 【具体的に…(2)】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10に 指定された値(例-厄年)が 自動入力される そんな方法を教えてください! どちらもできれば最高です!!

  • ExcelVBA 赤字のセルを黄色で塗りつぶす

    Excel VBA初心者です。 赤いフォントの数字と黒いフォントの数字を使って表を作ります。(空白のセルも有) 列(C~Y) 行(5~1000) 赤いフォントで数字を入力したら、自動的にセルが黄色で塗りつぶされるようにしたいのですが どうしたらいいでしょうか?回答よろしくお願いします。  

  • Excelでの入力値に基づく色付け→行全体に?

    お世話になります。 添付の表のような形式で、「E列」にある、振込確認ができた場合(✓と入力)に、該当する行全体のフォントの色を自動的に変更することはできるのでしょうか。 色々試してみたところ、該当するセルだけにフォントの色変更を適用することはできるのですが、行全体に適用可能なのか、また、もし可能であれば、その数式を教えて頂きたいと思います。 どうぞよろしくお願いいたします。