• ベストアンサー

Excelにてシート1のデータをシート2の集計表に反映させるには?

今、Excelにて売上集計表を作成しているのですが、 シート1にその月の各支店毎の売上を打ち込み、 それを、コマンドボタン(フォームのボタンでもいいのですが、) を押すと、シート2のその月の列にコピーされるというプログラムを 組みたいのですが、どうやれば良いのでしょうか? シート1は毎回X列を打ち変える(実際には間の各個人売上を打ちかえるのですが...)というシートで シート2はJ列から順に4月、5月・・となっている表です。 シート1はこうです。     A ・・    X    Y  ・ ・ ・ 1          4月 2 大阪支店   220万 ・ 8 奈良支店   150万 ・ 14 京都支店  180万 ・ 20 神戸支店  200万 ・ 26 滋賀支店  110万 ・ 32 岐阜支店  140万 ・ 38   計      1000万 ・ ・ という感じで入れて、X1の月を変えて(形式表示を変えているので実際の入力は数字のみです)、 コマンドボタンを押すと、シート2のその月の列(4月ならJ列8月ならN列という感じ)に 各支店の数字がコピーされるという仕組みが作りたいのです。 C~Wの間には個人別の売上が記載されており、 その累計をSUM()で出して、X列に記載しています。 行については、セル数も結合方法も、 シート1,シート2共に同じにしてあるので X列をそのまま値だけをコピーすれば移るのですが、 なにぶん使用するのがExcelに不慣れな不特定多数の方が使用し、 しかも「形式を選択して貼り付け」の「値」にチェックを入れてもコピー出来ず、 「値と数値の書式」をチェックしないとコピー出来ないので (なぜだか分かりませんが...。)誰にでもすぐ使える方法が一番いいのです。 よって、シート1にコマンドボタンを置き、 それを押せばコピーされる方法があれば教えて下さい。 関数でそれが可能なのであればそれでもいいですし、 他にいい方法があれば教えて下さい。 宜しくお願い致します。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

>シート1にその月の各支店毎の売上を打ち込み、 >それを、シート2のその月の列にコピーされるというプログラム は、こんな感じではどうでしょうか? Sub Test() Dim ws1 As Worksheet Dim ws2 As Worksheet Dim r1 As Range, r2 As Range Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") With ws1 Set r1 = .Range(.[X2], .Cells(Rows.Count, "X").End(xlUp)) End With Set r2 = ws2.Rows(1).Find(What:=ws1.Range("X1").Value, LookIn:=xlValues, _ LookAt:=xlWhole) If r2 Is Nothing Then MsgBox "見つかりませんので" & vbLf & "終わります。" Exit Sub End If r2.Offset(1).Resize(r1.Rows.Count).Value = r1.Value End Sub シート2のA列とシート1のA列の順序が同じなのが、 条件です。

guchi_yama
質問者

補足

お手数をお掛けして申し訳ないのですが、 Test() というのは、どこに貼り付けるプログラムなのでしょうか? コマンドボタンに貼る場合、 Private Sub CommandButton1_Click() End Sub というような形になりますよねぇ? それとも、モジュールの種類が違うのでしょうか? 何度もすいませんが、その辺りを再度ご教授願います。

その他の回答 (4)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

4月とかが値で入力しているのではなく、シリアル値(日付)を 4月と表示しているのでしょうか? その場合だと見つからないのかも?

guchi_yama
質問者

お礼

その辺も自分なりに考えて何度も変えながらやってみたんですが、 無理でした。 でもホント、何度もご足労頂いてすいませんでした。 また、何かありましたらアドバイス宜しくお願い致します。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

ANo.2です。 こちらで標準モジュールで検証したそのままをのせてます。 Sub Test() End Sub の中身を Private Sub CommandButton1_Click() End Sub の中へコピペして下さい。

guchi_yama
質問者

お礼

何度もご回答頂きありがとうございます。 作って頂いたプログラムを幾度と無く試してみたのですが、 「見つかりませんので終わります」というメッセージボックスが 出るばかりで、コピーが出来ません。 何がおかしいのでしょうか? n-junさんが自分でやったら出来ている訳ですよね? コピーペしているだけなのになぜ出来ないのでしょう? 表の内容も質問で載せた表そのままなのですが、 正直、X2:X7を結合していたりと、ところどころ表現しにくくて 1つのセルで表示しているように書いていますが、 別BOOKに新しく簡易な表を作り直してもやってみたのですが、 うまくいきませんでした。 今回は諦めて、また別の方法を模索してみます。 しかし、多大な労力を使ってご協力頂きありがとうございました。 感謝致します。 まだまだ、勉強不足な私ではありますが、 今後とも宜しくお願い致します。

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.3

既に、No.2にてぴったりの回答がされてます。 guchi_yamaさんの描かれているイメージとずれているかもしれませんが、別の方法:Sheet1に一つでもデータ変更が生じたらリアルタイムで、そのデータがSheet2に反映されるという方法を提案します。 次のコードをSheet1のシート名タグを右クリック→コードの表示(V)で表示されるコードエリアに貼り付けます。 Private Sub Worksheet_Change(ByVal Target As Range) Dim tuki As String Dim m As Integer If Target.Row Mod 6 = 2 Then tuki = Cells(1, "x") m = Val(Left(tuki, Len(tuki) - 1)) Sheets("Sheet2").Cells(Target.Row, m + 6).Value = Cells(Target.Row, "x") End If End Sub

guchi_yama
質問者

お礼

ご回答頂きありがとうございました。 このやり方も、何度も試してみたのですが、うまくいきませんでした。 ご協力頂いたのに、完成できず申し訳ありません。 もっともっと勉強して、理解できるよう勤めます。 また何かありましたら、これに懲りずにご回答頂ければ幸いです。 本当にありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

シート1は、大阪支店・奈良支店・・・と行間が空いてますが、 シート2はどのようになっているのでしょう? 同じ行間が空いている? それとも、支店名で上詰めしている? 支店名はA列にある?

guchi_yama
質問者

補足

説明不足ですいません。 シート1、シート2と、共に全て同じ行間です。 セルの結合方法も同じにしてあります。 なのに、形式を選択して貼り付けで、値だけのコピーが出来ないのは、 どこか違う部分があるって事ですかねぇ? でも、値と数値の書式を一緒にコピーすると出来るんです。 って、それはどうでもいいですよね;; 支店名も同じA列にあります。 タイトル部分がI列まであるんですが、A~I列まで全て同じです。 J列からシート2には4月、5月、6月・・と月の累計が入るようにしています。 宜しくお願い致します。

関連するQ&A

  • Excelにてシート1のデータをシート2の集計表に反映させるには?Part2

    昨日、下記のようなシート1の入力用の表で X列のX1の月を変更するごとに 月毎にしたシート2の集計表のX1で変更した月列へ コピーする方法を教えて頂き、 無事完成させることが出来ました。 しかし、新たな問題が発生して困っています。 前回も記載しましたが、シート1はこうです。     A ・・    X    Y  ・ ・ ・ 1          4月 2 大阪支店   220万 ・ 8 奈良支店   150万 ・ 14 京都支店  180万 ・ 20 神戸支店  200万 ・ 26 滋賀支店  110万 ・ 32 岐阜支店  140万 ・ 38   計      1000万 ・ ・ そして、シートコピーする為のプログラムはこうです。 Private Sub CommandButton1_Click() Dim ws1 As Worksheet Dim ws2 As Worksheet Dim r1 As Range, r2 As Range Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") With ws1 Set r1 = .Range(.[X2], .Cells(Rows.Count, "X").End(xlUp)) End With Set r2 = ws2.Rows(1).Find(What:=ws1.Range("X1").Value, LookIn:=xlValues, _ LookAt:=xlWhole) If r2 Is Nothing Then MsgBox "見つかりませんので" & vbLf & "終わります。" Exit Sub End If r2.Offset(1).Resize(r1.Rows.Count).Value = r1.Value End Sub お礼をした時点では、出来ませんでした。と記載したのですが それからさらに何度も取り組んだ結果、無事完成する事が出来ました。 (昨日ご回答頂いた方、大変ありがとうございました。 この場をお借りしてお礼申し上げます。) しかし、ここからが問題なのですが、 最後のX列にもう1列追加し、2行を一緒にコピーしたいのです。 X列の3行目に18日、Y列の3行目に20日 と勤務日数を追記したいのです。 月、金額部分はX列とY列を行ごとにセル結合しているのですが、 上記の"X"というプログラムでも X列に記載した、18日はチャントコピーされます。 しかし、結合していないY列の20日という日付はコピーされません。 "X"の部分を"X:Y"としてみたり、 自分なりに色々やってみましたが、出来ませんでした。 どうやれば2列のコピーが可能なのでしょうか? 前回同様、シート1,シート2共に行,列は同じ列間、同じ行間です。 説明不十分で申し訳ないのですが、もしお手数でなければ、 前回の記載文を見ていただけると幸いです。 タイトルは今回と同様です。(勿論Prat2はつけてません) 何卒宜しくお願い致します。

  • エクセルVBAで対応する表の数値を取得したいのですか・・・

    こんばんは。教えていただけるでしょうか。 表形式で表現したかったのですが、無理のようでしたので、下のように表しました。 二つのシート[売上データ][原価表]があります。 [売上データ]にはランダムに各支店で売り上げた商品名がデータとしてあります。この[売上データ]のL列の「原価」に支店ごとに原価の違う原価の値を入れていきたいのですが、どのようにすればいいでしょうか。 支店ごとに違う原価の値は「原価表」のBからF列に商品名ごとに表になっています。 たとえば、[売上データ]のA列に“商品A”という商品が、J列の支店名に“札幌”とあったとすると、 [原価表]のA列の中から商品名を探して、B列の札幌の列から“商品A”に対応する原価の値を探して、[売上データ]のL列(原価)に順に入れていくというようにしたいのですがさっぱりわかりません。関数でもできると思うのですが、それも私には難しくわかりません。どなたか教えていただけるでしょうか。よろしくお願いします。 [売上データ] A1 商品名 B1 項目a C1 項目b ・ ・ ・ J1 支店名 ・ L1 原価 [原価表] A1 商品名 B1 札幌 C1 東京 D1 名古屋 E1 大阪 F1 福岡

  • エクセル:複数シートをまとめた集計方法

    店の売上管理のために以下のような表があります。 ・月ごとにシートを分けて集計(1月~12月のシート) ・各シートは、4列でそれぞれの列は、「都道府県名」「地区名」「店名」「売上」で構成。各店は「都道府県名」「地区名」「店名」の3つの情報で特定 ・行数(店数)は各月でまちまち(売上があった店のみ記載のため)ですが、数千以上は存在 ※従って地道にコピーして重複を消してという作業は非効率になってしまう。。 上記表の集計を1つのシートで次のようにまとめたいと考えています。 ・15列構成。(内訳は「都道府県名」「地区名」「店名」「1月の売上」~「12月の売上」) ・重複した行が無い。例えば1月、4月、12月と売上があった店も1行で管理したい。 以下のような手順を考えましたが、良い手順が思いつきません。そもそも実現可能かもわかっておりません。 他の方法も含めて良い案があれば教えてください。お願いします。 手順1:1月度のシートの「都道府県名」「地区名」「店名」をコピー 手順2:2月以降のシートに関しては、それ以前の月のシートには登場していない「都道府県名」「地区名」「店名」のみ追加でコピー 手順3:IFやVLOOKUP関数などを駆使して、各店舗毎の月間売上を各月のシートの売上値を参照して代入??

  • エクセル シート間の集計について

    エクセル(2007)で複数のシートを集計したいです。 行には顧客名、列には売上げやコストなどの数字が入っています。 1月~12月のシートがあり、集計シートにはその合計数字が入るようにします。 月によって顧客名が増えたり減ったりするので、各シートの同じセルに同じ顧客名があるわけではありません。 こういう場合、集計することができるのでしょうか? どのような手順でやればよいのでしょうか?

  • エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位

    エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位置に値を表示させたい シート2の A列に番号(連番) B列に商品名(数字とアルファベットの組み合わせ) C列に仕入先(数字4桁) D列にメーカー(数字4桁) E列に区分(数字とアルファベットの組み合わせで3ケタ) が入っていて約5,000行のデータが有ります。 シート1にレイアウトした表があって シート1のB4にシート2のA2の値(番号連番) シート1のB5にシート2のB2の値(商品名) シート1のB6にシート2のC2の値(仕入先) シート1のB7にシート2のD2の値(メーカー) シート1のB8にシート2のE2の値(区分) が表示されるようにしてあります。 マクロを利用して、作成したシート1のボタンを押すと シート1のセルB4の番号欄が1から2(シート2のA3の値)に繰り上がり、 シート1の表のA列の番号と同じ行のそれぞれの値を 上記の規則で表示させるようにできますか? シート1のB4が2になるとシート1の3行目をさしますので シート1の表には、 シート1のB4にシート2のA3の値(連番) シート1のB5にシート2のB3の値(商品名) シート1のB6にシート2のC3の値(仕入先) シート1のB7にシート2のD3の値(メーカー) シート1のB8にシート2のE3の値(区分) が表示されます。 シート1のボタンをクリックするごとにB4のセルは3,4,5,6と繰り上がり シート2のA列の番号と一致した行のそれぞれの値を表示させていく。

  • エクセル2003で表の集計をはり付けしたら

    Aシートの表の中のデータの個数を集計して可視セルジャンプしてコピーBシートの表に行列を変えて貼り付けたらREFエラーがでました。 値だけをコピーすれば数値はきちんと貼り付けられますが これだと表を変更したときに更新してくれません。 集計したときの値は値でコピーするのが一般的なのですか? ちなみにコピーした数式は=SUBTOTAL(3,E4:E21) です。

  • Excelの集計表で1ヶ月分別表に抜き出したいです

    Excel2010を使用しています。   A    B   C   D   E   F   G 1         1月         2月 2     売上 請求 残高 売上 請求 残高 3 本社 1000  800 200  4 支店 800  650 150 5 営業 600  300 300  上記のような集計表に一年分の数値を月ごとに打ち込んでいます。 これを下記のような1か月分の別表に抜き出して印刷をかけたいのですが。   A    B   C   D   1 1月  売上 請求 残高 2 本社 1000  800  200 3 支店  800  650  150 4 営業  600  300  300 A1のところに月を入力すれば、B2:D4のところに集計表の数字が出るような。 VLOOKUPやHLOOKUP、INDEX等ネットで探して関数と格闘して何日かやってみましたが 上手くできませんでした・・・。 別表は同じシートでも別シートでも可能です。 関数を利用して作りたいので、よろしくお願いします。

  • エクセルで1行だけ数式が反映されない?

    とても困ってしまったので、どなたか教えてください。 詳しく状況を説明するために長々と書いてます。 エクセルで売掛金を管理するための集計表を作っています。 シート1 売上金とその入金の記録をしています。 A列:売上が発生した月を直接入力 例)4月分 B列:関数を使って月の数字だけ取り出す作業列 例)4   =LEFT(A2,LEN(A2)*10-    SUM(LEN(SUBSTITUTE(A2,{0,1,2,3,4,5,6,7,8,9},)))) C列:取引先名を直接入力 例)A社 D列:取引先名と売上月を組み合わせる作業列(=B2&C2)    例)4月のA社の売上 → 4A社 F列:売上金額を直接入力 シート2 月ごとの売上・入金・残高が、取引先単位で分かる一覧表です。 1つの取引先について、1行使っています。 シート2で、A社の4月の「売上」に該当するセルに、 =SUMIF(シート1!$D:$D,"4A社",シート1!$F:$F) と入力して、4月のA社の売上金額を表示するようにしました。 と、ここまでは良かったのですが 80近くある行のうち、15行目だけが売上金額を表示せずに 「0」になってしまいます。 当初は15・16行目が0表示だったのですが、 何度も関数やシート1の値を入れ直したり、正確なセルから書式のコピーをしてみたりしている内に 何が良かったのか分からないのですが、売上金額が表示されました。 ですが、15行目だけがどうしても「0」表示のままなのです。 シート1のD列の関数を消して、直接値を入力してみたところ、 売上金額が表示されました。 昨日からずっと困ってます。 どなたかアドバイスをお願い致します。。

  • エクセルと集計

    こんにちは。 エクセル初心者で勉強中です。 今、下記の画像のようなシートを作成しました。 支店別の売上表です。 B列とC列を結合して、そこに日付(表示形式 日付)を入力しています。 それぞれの金額はF列に入っていて、小計が間に入っています。 ここで、したい処理なのですが、画像右側部分のように簡単な検索画面を 作って、支店別、売上日別の金額を調べたいのです。 検索条件は支店名と売上日(O/O~O/O)という形です。 計算の対象となるデータの行数ですが、そんなに多くはないですが、 E列の3行目から最終行までとします。 ピボットテーブルも試してみましたが、うまくいかず、できれば K7セルに数式を入れるか、VBAでやりたいのですが。 よろしくお願いします。

  • エクセルで複数のシートにまたがるデータを一枚にまとめる方法

    よろしくお願いします。 エクセルのシートが3シートあり、 シート1、シート2には従業員の名前、出勤日、売上高が一覧になっています。シート1、2の違いは月別となっています。 簡単に表にすると a,b,cという従業員がいた場合、 A列 B列 C列 a 4/1 3000 b 4/1 2000 a 4/2 4000 c 4/2 5000 b 4/3 2000 といったイメージなのですが・・・ それを今はそれぞれ月ごとに 人別にオートフィルターで検索し シート3に貼り付け人別の売上表にまとめています。 この場合だとシート1が4月シート2が5月の売上表だった場合、 シート3にaさんの4月5月の売上を一覧表にしています。 例では3人ですが、実際は人数が20人ほどいて、月別のシートも今後増えていきます。 シート3に検索条件aと入力したら シート2、3からVLOOKで値が抽出できるかとも試してみたのですが、 VLOOKは一番最上段のデータのみを抽出してしまうので断念しました。 今後の作業の効率化を考えると少しでも省略化したことを行いたいのですが・・・ なにかよいアドバイスがありましたらいただけると幸いです。

専門家に質問してみよう