ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

エクセルで某使用料金の集計表を作成しており、
シート1で実数値を入力し、シート2で単位千円の提出用資料を作成しております。
単純に、シート1で入力された数値を、シート2で同じフォーマットで、INT関数を使用しているだけなのですが、
シート1で新規に行を挿入した場合、シート2でも同様に行を挿入し、数式をコピーして対応しております。

しかしながら、毎月、新規で行を挿入するケースが増え、油断するとシート2への行挿入を忘れるなどの事態が発生しております。

もっと簡易な方法で、シート1で作成した表の、千円単位に変換した表を作成することはできないのでしょうか?

できるだけ易しい方法を教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (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!だった場合は,シート名が実際にあなたが使っているモノと違っています。
実際のシート名に数式を直さなければいけません。
「エクセルでの複数シートへの同時行挿入」の回答画像4
    • good
    • 0

こんにちは!


すでに回答は出ているようなので、参考程度で・・・

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
    • good
    • 0

シート2のA1セルに


=IF(INDEX(Sheet1!A:A,ROW())="","",INT(INDEX(Sheet1!A:A,ROW())/1000))
という式を入れてコピー,シート2の表範囲にずらり埋めて貼り付けておきます。

シート1で如何様に行挿入・行削除しても,全く何もしなくてもシート2はその姿を反映した表になります。
    • good
    • 1
この回答へのお礼

ありがとうございます。

シート2A1セルに上記数式をコピーしたのですが、NAMEの表示が出てうまくいきません。

なにか注意点あるのでしょうか?

お礼日時:2011/04/20 07:50

シート1に行を挿入するときにシートを「作業グループ化」してから行の挿入を実行する習慣をつけられてはいかがでしょう。



作業グループ化→まずSheet1のタブをクリックします。次にShiftキーを押しながらSheet2のタブをクリックします。
Sheet1とSheet2のタブが白くなり選択状態になります。
この状態でシート1の行選択をして行を挿入するとシート2にも同時に行が挿入されます。

解除するにはSheet1(2でも可)のタブ上を右クリックし出てきたメニューの「作業グループ解除」をクリックすれば元の状態になります。

その後関数をコピーでは。
    • good
    • 1
この回答へのお礼

早速の返答ありがとうございます。

作業グループ化、やってみました。が、うまくいきません。

シート1をクリック後、shiftキー押しながらシート2を選択し、シート1&2が反転した状態で、
行挿入しようと、行の上で右クリックしても、「挿入」メニューも白字に反転しており実行できません。

なにか方法が違うのでしょうか?

ちなみに、エクセル2007です。

お礼日時:2011/04/19 15:48

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q[エクセル]行の挿入、シート間で連携できますか?

こんにちわ。

販売管理をエクセルで行っております。
その際にちょっと出来ないかな??と思うことが出てきましたので書き込みました。

たとえば、新規作成のBookでSheet1~3があります。
やりたいことは、
Sheet1の4行目と5行目の間に2行を挿入した場合、連携してSheet2やSheet3の4行目と5行目のように同じ箇所に同じ追加した行数分、挿入されて欲しいわけです。

ちょっと説明が難しいな・・・、言いたいこと伝わってますかね??
これが出来たらすっごい効率Upなんですが・・・出来ませんか??

Aベストアンサー

変更したいシートのタブ(下のsheet1)を変更したいシートのところだけ、Ctrlを押しながら選択し、どのシートでもかまいませんから行なり、列なりを挿入する。これで、選択したシートも同じ部分だけ変更されます。

QExcelで行が挿入したときに、自動的に別シートにも挿入したい

お世話になります。

例えばシート1の11行目に行が挿入された場合、
シート2の11行目にも自動的に行が追加されるような
マクロを作りたいのですが、どうも検索で情報が
見つかりませんでした。

ご存知のかたがおられましたら、よろしく
お願いいたします。

Aベストアンサー

こんにちは。

ご質問は、簡単そうにみえて、あまり簡単ではありませんね。イベントには違いはないのですが、通常のイベントとは違います。インスタンスが必要です。

実は、今回、私は、いろんなところを手抜きをしているし、おまけにクラスモジュールを使わなかったのですが、たぶん、以下で可能なはずです。ボタン自体は、本来は1つで足りるはずですが、これも手抜きです。(もし、クラス・インスタンスが必要なら、作り直します。そのほうが安全性は高いです。)

行全体と、セル単独の挿入があり、また、右クリックメニューと、標準メニューの挿入の行からの命令がありますから、それらのコマンドバーボタンにイベントをつけてあげればよいわけです。

SettingInsertButton() が、設定用ですが、後は、ThisWorkbook_Openで、自動的に設定するようにしてありますから、起動と同時に設定されます。ブックの区別はしてありませんので、必要なら、ThisWorkbook.Sheet1 というようにしてください。なお、Sheet1はオブジェクト・ネームで、シート名ではありませんから、お間違えないように。このコードは、シートモジュールや、標準モジュールに書くことはできません。(一部を除いて)

'<ThisWorkbook のみ>
Option Explicit

Private WithEvents myBtn As Office.CommandBarButton
Private WithEvents myBtn2 As Office.CommandBarButton
Private WithEvents myBtn3 As Office.CommandBarButton

Sub SettingInsertButton()
'ボタンの設定
  With Application
   Set myBtn = .CommandBars("Cell") _
   .FindControl(, 3181)
   Set myBtn2 = .CommandBars("Row") _
   .FindControl(, 3183)
   Set myBtn3 = .CommandBars("Worksheet Menu Bar") _
   .Controls("挿入(&I)").Controls("行(&R)")
  End With
End Sub


Private Sub myBtn_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
Dim myRng As Range
 'セルの挿入のイベント/コマンドバーを含む
 Set myRng = Selection
 Application.EnableEvents = False
 Call myProcedure(myRng)
 Application.EnableEvents = True
End Sub
Private Sub myBtn2_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
 Dim myRng As Range
 '行全体の挿入のイベント
 Set myRng = Selection
 Application.EnableEvents = False
 Call myProcedure(myRng)
 Application.EnableEvents = True
End Sub
Private Sub myBtn3_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
 Dim myRng As Range
 'メニューの挿入の行からのイベント
 Set myRng = Selection
 Application.EnableEvents = False
 Call myProcedure(myRng)
 Application.EnableEvents = True
End Sub


Private Sub myProcedure(arg As Range)
Dim myRngAdd As String
 'シート1でない場合は、除外
 If ActiveSheet.Name <> Sheet1.Name Then Exit Sub
 myRngAdd = arg.Address(0, 0)
 '行挿入
 If arg.Address(0, 0) = arg.EntireRow.Address(0, 0) Then
 '行全体
   Sheet2.Range(myRngAdd).EntireRow.Insert
 Else
 'セルの範囲
   Sheet2.Range(myRngAdd).Insert
 End If
End Sub
Private Sub Workbook_Open()
'起動時の設定
  Call ThisWorkbook.SettingInsertButton
End Sub

こんにちは。

ご質問は、簡単そうにみえて、あまり簡単ではありませんね。イベントには違いはないのですが、通常のイベントとは違います。インスタンスが必要です。

実は、今回、私は、いろんなところを手抜きをしているし、おまけにクラスモジュールを使わなかったのですが、たぶん、以下で可能なはずです。ボタン自体は、本来は1つで足りるはずですが、これも手抜きです。(もし、クラス・インスタンスが必要なら、作り直します。そのほうが安全性は高いです。)

行全体と、セル単独の挿入があり、また...続きを読む

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルのシートを同時に行削除、行挿入させて自動連動させたい

エクセルで、横(列)256列以上のデータを入力したいため、シートを分けざるをえません。その場合、次のようなことがしたいとき、どのようにすればよろしいでしょうか?(やりたいことの結論下記(3)になります。)

エクセルのシートが2つ以上あるとします。
(1)「sheet1」には、基本データ(名簿録のようなもの・氏名ふりがなアイウエオ順配列)

(2)ふたつめ以降のシートには、毎月変更するデータを入力し、「sheet1」の名簿の個々のIDに対応したそれぞれ同じ行番号に入力することになります。

(3)「sheet1」で行削除(名簿対象者解約)や行挿入(新規契約者)を任意の場所で行いたい。それに連動して、2つ目以降のシートでも同じ列で行削除・行挿入を自動でしたい。

★この簡易システムを作成するのはマクロ初心者の私であり、日々の入力作業するのはエクセルそのものが初心者である他者となります。

★行挿入、行削除のときだけシートの同時選択を手作業でしてもらうことは想定していません。そのあたりをも含めた自動化の智恵がでてこないのです。

以上、よろしくお願いします。

エクセルで、横(列)256列以上のデータを入力したいため、シートを分けざるをえません。その場合、次のようなことがしたいとき、どのようにすればよろしいでしょうか?(やりたいことの結論下記(3)になります。)

エクセルのシートが2つ以上あるとします。
(1)「sheet1」には、基本データ(名簿録のようなもの・氏名ふりがなアイウエオ順配列)

(2)ふたつめ以降のシートには、毎月変更するデータを入力し、「sheet1」の名簿の個々のIDに対応したそれぞれ同じ行番号に入力することになります。

(3)「sh...続きを読む

Aベストアンサー

1. ALT+F11でVBA(マクロ)の画面がでます。

2. そして左にThisWorkbookというオブジェクトがあったらダブルクリックします。

3. 右に白い窓が出たらさっきのコードを全部貼り付けてください。

4. その後、ワークシートに戻っててきとうながセルで右クリックしてみてください。


↓ ちょっと書き換えてみました。

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim RT As Long
Dim mySh As Worksheet
Dim myRow As Long

Cancel = True

myRow = Target.Row

If Sh.Name <> "Sheet1" Then Exit Sub

RT = Val(InputBox("1=挿入" & Chr(10) & Chr(13) & _
"2=削除" & Chr(10) & Chr(13) & _
"3=キャンセル"))

If RT <> 3 And RT <> 0 Then
For Each mySh In Worksheets
mySh.Select
Rows(myRow).Select
Select Case RT
Case 1
Selection.Insert Shift:=xlDown
Case 2
Selection.Delete Shift:=xlUp
Case 3
End Select
Next mySh
End If
Sh.Select
End Sub

1. ALT+F11でVBA(マクロ)の画面がでます。

2. そして左にThisWorkbookというオブジェクトがあったらダブルクリックします。

3. 右に白い窓が出たらさっきのコードを全部貼り付けてください。

4. その後、ワークシートに戻っててきとうながセルで右クリックしてみてください。


↓ ちょっと書き換えてみました。

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim RT As Long
Dim mySh As Worksheet
Dim myRow As Lon...続きを読む

QVBAであるマクロを全てのシートに対して流したい

お世話になります。

現在シート単位に実行するマクロ1があります。

これを、全てのシートに対して、マクロ1を実行したいのですが、どのようにすればよいでしょうか?
※現在は、シートが終わる毎に手動でマクロ1を実行して、それが終われば次のシートへという形です。

大変お手数ですが、何卒よろしくお願いします。

Aベストアンサー

全てのシートに同じマクロ、ということは
そのマクロはアクティブシートに対して処理してるはずですから
該当シートをアクティブにしながら実行されなければいけないので
以下のようになります。

'-------------------------------------------
Sub Test()
Application.ScreenUpdating = False
 Dim Sht As Worksheet
   For Each Sht In Worksheets
     Sht.Select
     Call マクロ1
   Next Sht
Application.ScreenUpdating = True
End Sub
'--------------------------------------

全てのシートをアクティブにしながら実行しますので画面がちらつきます。
それを抑えるのが、ScreenUpdatingメソッドです。

違いを見る為に最初は、それを抜いて実行してみてください。

 

全てのシートに同じマクロ、ということは
そのマクロはアクティブシートに対して処理してるはずですから
該当シートをアクティブにしながら実行されなければいけないので
以下のようになります。

'-------------------------------------------
Sub Test()
Application.ScreenUpdating = False
 Dim Sht As Worksheet
   For Each Sht In Worksheets
     Sht.Select
     Call マクロ1
   Next Sht
Application.ScreenUpdating = True
End Sub
'------------------------------...続きを読む

Q同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか

EXCELVBAであるシートに作業をさせるVBAを作成しました。
同じ作業を複数のシートに
実行させるにはどうしたらいいのでしょうか。
宜しくお願い致します。

**************作成したVBA**********

Sheets("sheet1").Select
ActiveWindow.SmallScroll Down:=66
Range("D2:D101").Select
Selection.Cut
  …50行ほどあります…

***********************************


sheet1とsheet2に同じ作業をさせたい
以下のやりかただと長くなるためまとめたい
  
**************作成したVBA**********

Sheets("sheet1").Select
ActiveWindow.SmallScroll Down:=66
Range("D2:D101").Select
Selection.Cut
  …50行ほどあります…

Sheets("sheet2").Select
ActiveWindow.SmallScroll Down:=66
Range("D2:D101").Select
Selection.Cut
  …50行ほどあります…

Sheets("sheet3").Select
ActiveWindow.SmallScroll Down:=66
Range("D2:D101").Select
Selection.Cut
  …50行ほどあります…

***********************************

EXCELVBAであるシートに作業をさせるVBAを作成しました。
同じ作業を複数のシートに
実行させるにはどうしたらいいのでしょうか。
宜しくお願い致します。

**************作成したVBA**********

Sheets("sheet1").Select
ActiveWindow.SmallScroll Down:=66
Range("D2:D101").Select
Selection.Cut
  …50行ほどあります…

***********************************


sheet1とsheet2に同じ作業をさせたい
以下のやりかただと長くなるためまとめたい
  
**************作成したV...続きを読む

Aベストアンサー

全く同じ処理なら、シートのグループ化という方法もあります。


Sheets(Array("Sheet1", "Sheet3")).Select
処理
 :

http://officetanaka.net/excel/vba/tips/tips32.htm

Qエクセルで多数のシートをまとめる方法

エクセルで10以上あるシートを一発でひとつにまとめる方法はあるでしょうか?

コピー&ペーストを繰り返すしかないのでしょうか…

仕事で明日やらなければならないので、
お分かりになる方、是非教えてください!

Aベストアンサー

まぁ既出回答にもあるように,10数回程度コピー貼り付けすることで,どうという作業ではないとは思います。

さておき。
ご利用のエクセルのバージョンが不明ですが,ご利用のOfficeのバージョンによっては

1.ワードを起動する
2.挿入のファイルからエクセルブックを指定する
3.添付図のようなダイアログが表示されたらラッキー成功です,ブック全体を指定して挿入する
4.Ctrl+Aで全体を選び,コピーして,エクセルの新しいシートに貼り付ける

と一発でできます。
添付図のようにならなかったときは,出来ません。

QVBAで行コピーして挿入

1行目の内容をコピーして、他の場所に指定数分だけ
挿入するマクロを作りました。

そのマクロ自体は、正しく動いたのですが、コピー元の1行目に
他のシートを参照する関数が入っていた場合、想定どおりの
結果を得ることができません。

[SHEET1:データのみを記載]
省略

[SHEET2]
A1セル:   =SHEET1!$A1 ←コピー元の行

[マクロ:一部抜粋]
myR = Application.InputBox("挿入する行数を入れてください", , "1")

For i = 1 To myR
  Rows("1:1").Copy
  Cells(ActiveCell.Row, 1).Select
  Selection.Insert Shift:=xlDown
  Selection.EntireRow.Hidden = False
Next i

どういう結果を求めたいかというと、たとえば、
SHEET2のA10セル上で、このマクロを実行し、 "挿入行 = 3" と指定したら

A10:   =SHEET1!$A10
A11:   =SHEET1!$A11
A12:   =SHEET1!$A12

となってほしかったのですが、結果は、

A10:   =SHEET1!$A10
A11:   =SHEET1!$A10
A12:   =SHEET1!$A10

となってしまいました。

どうにか、求める結果を得られるようにできないでしょうか?

1行目の内容をコピーして、他の場所に指定数分だけ
挿入するマクロを作りました。

そのマクロ自体は、正しく動いたのですが、コピー元の1行目に
他のシートを参照する関数が入っていた場合、想定どおりの
結果を得ることができません。

[SHEET1:データのみを記載]
省略

[SHEET2]
A1セル:   =SHEET1!$A1 ←コピー元の行

[マクロ:一部抜粋]
myR = Application.InputBox("挿入する行数を入れてください", , "1")

For i = 1 To myR
  Rows("1:1").Copy
  Cells(ActiveCell.Row, 1).S...続きを読む

Aベストアンサー

Active.Cellが同一の位置なのだから相対変位しません。

一例です。(ループは不要なので削除しました)
myR = Application.InputBox("挿入する行数を入れてください", , "1")
Rows("1:1").Copy
Rows(ActiveCell.Row & ":" & ActiveCell.Row + myR - 1).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

QExcelで入力したデータを他のシートにも反映したいです

Excelでシートに入力したデータだけを他のシートに表示させたいです・・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。

シート1
 Å列    B列 C列    
キャベツ     玉   1
りんご     個   2
オレンジ    個
バナナ     本   10
きゅうり    本
ニラ     Kg  20.5

シート2
 Å列    B列 C列
キャベツ     玉  1
りんご     個  2
バナナ     本  10
ニラ     Kg  20.5

↑のように。シート1に入力したデータを入力した行ごと表示させたいです。

Aベストアンサー

》 なにぶん初心者なもので…

関数を一切使用しない方法(フィルタオプションの設定)をご紹介します。

Sheet1
1   A    B   C
1 品名   単位 数量
2 キャベツ 玉    1
3 りんご  個    2
4 オレンジ 個
5 バナナ  本   10
6 きゅうり 本
7 ニラ   Kg  20.5
8

添付図は[フィルタオプションの設定]を開始する Sheet2 を示しています。
([データ]→[フィルタ]→[フィルタオプションの設定]の手順を実行します)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報