• ベストアンサー

エクセルでの複数シートへの同時行挿入

エクセルで某使用料金の集計表を作成しており、 シート1で実数値を入力し、シート2で単位千円の提出用資料を作成しております。 単純に、シート1で入力された数値を、シート2で同じフォーマットで、INT関数を使用しているだけなのですが、 シート1で新規に行を挿入した場合、シート2でも同様に行を挿入し、数式をコピーして対応しております。 しかしながら、毎月、新規で行を挿入するケースが増え、油断するとシート2への行挿入を忘れるなどの事態が発生しております。 もっと簡易な方法で、シート1で作成した表の、千円単位に変換した表を作成することはできないのでしょうか? できるだけ易しい方法を教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

>シート2A1セルに上記数式をコピーしたのですが、NAMEの表示が出てうまくいきません。 考えられる理由1) ご利用のシートが添付図左のように「A1」になっていないで,添付図の右側のように行も列も123表示になっているときに回答の式をコピーして入れると#NAME?エラーになります。 行も列も123表示で使っていたときは,数式は1行1列のセルに =IF(INDEX(Sheet1!C,ROW())="","",INT(INDEX(Sheet1!C,ROW())/1000)) のように入れてコピーします。 考えられる理由2) コピーして入れたのではなくご自分で数式を記入していて,誤記があると#NAME?エラーになります。 記入した式をよく再確認してください。 何が悪いのかご自分で見つけられないときは,あなたがご自分のエクセルに入れて実際にエラーが出ている「その数式」を実際のエクセルからコピーして掲示し教えてください。 考えられる理由3) 実は出ているエラーが#NAME?ではなく#REF!だった場合は,シート名が実際にあなたが使っているモノと違っています。 実際のシート名に数式を直さなければいけません。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! すでに回答は出ているようなので、参考程度で・・・ VBAでの一例です。 Sheet1のデータをそのままsheet2にコピー&ペーストし、数値のセルだけ千単位の表示にしてみました。 (INT関数をお使いだということなので、下3桁を切り捨てて表示するようにしています。) Altキー+F11キー → VBE画面がでますので、画面左側にある「THISWorkbook」を選択し、↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim c As Range Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") '←Sheet名は実際のSheet名に! Set ws2 = Worksheets("sheet2") '←こちらのSheet名も適宜変更 i = ws1.UsedRange.Rows.Count j = ws1.UsedRange.Columns.Count Range(ws1.Cells(1, 1), ws1.Cells(i, j)).Copy ws2.Cells(1, 1).Select ActiveSheet.Paste Application.CutCopyMode = False For Each c In Selection If c <> "" And IsNumeric(c) Then c = WorksheetFunction.RoundDown(c / 1000, 0) End If Next c ws2.Cells(1, 1).Select End Sub 'この行まで Sheet1のデータが変わるたびにマクロを実行する必要があります。 参考になれば良いのですが・・・m(__)m

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

シート2のA1セルに =IF(INDEX(Sheet1!A:A,ROW())="","",INT(INDEX(Sheet1!A:A,ROW())/1000)) という式を入れてコピー,シート2の表範囲にずらり埋めて貼り付けておきます。 シート1で如何様に行挿入・行削除しても,全く何もしなくてもシート2はその姿を反映した表になります。

undonuts
質問者

お礼

ありがとうございます。 シート2A1セルに上記数式をコピーしたのですが、NAMEの表示が出てうまくいきません。 なにか注意点あるのでしょうか?

回答No.1

シート1に行を挿入するときにシートを「作業グループ化」してから行の挿入を実行する習慣をつけられてはいかがでしょう。 作業グループ化→まずSheet1のタブをクリックします。次にShiftキーを押しながらSheet2のタブをクリックします。 Sheet1とSheet2のタブが白くなり選択状態になります。 この状態でシート1の行選択をして行を挿入するとシート2にも同時に行が挿入されます。 解除するにはSheet1(2でも可)のタブ上を右クリックし出てきたメニューの「作業グループ解除」をクリックすれば元の状態になります。 その後関数をコピーでは。

undonuts
質問者

お礼

早速の返答ありがとうございます。 作業グループ化、やってみました。が、うまくいきません。 シート1をクリック後、shiftキー押しながらシート2を選択し、シート1&2が反転した状態で、 行挿入しようと、行の上で右クリックしても、「挿入」メニューも白字に反転しており実行できません。 なにか方法が違うのでしょうか? ちなみに、エクセル2007です。

関連するQ&A