『数式のコピーは』(初心者)
おねがいします。家計簿を自作しようと考えています。ネットにはたくさんありますが、自分の使いやすさを考えて自作に挑戦しています。 1月〜12月までの12枚各月集計シートと1枚目にそれらの年間集計表のスタイルを考えています。そこで質問なのですが、1枚目の集計表には各月のシートから拾ってくる次の数式が相当数のセルに表示されるようにしていますが、たとえば、集計表のB2〜B13のセルには ='1'!$C$7 〜 ='12'!$C$7 の数式を入れて、その下の行のC2〜C13には ='1'!$C$8 〜 ='12'!$C$8 以下同様の数式がかなりあります。これらを手入力してはものすごく時間がかかるので、最初のセルには手入力であとはコピーで入力できる方法を教えてください。
< 使用 Excel:unknown、使用 OS:Windows11 >
これで相対参照が自動調整され、シート名が順次変化します。
基本的なコピー手順
B2セルに ='1'!$C$7 を手入力します。
次にB2の右下隅(フィルハンドルが表示される黒い十字)をドラッグしてB3〜B13まで選択すると、数式が ='2'!$C$7、='3'!$C$7...と自動で連番化されます。
C列(C2に='1'!$C$8)も同様にB列全体を選択後、
右クリック→「コピー」→C2右クリック→「形式を選択して貼り付け」→「数式」を選び、C2〜C13に貼り付けると参照行が自動調整されます。
他の行でも同じ要領で、1列目だけ手入力後コピー適用可能です。
ショートカット活用
Ctrl+Cで最初の数式をコピーし、貼り付け範囲(例:B3:B13)を選択後Ctrl+Dで下方向詰め込み。
列全体ならフィルハンドルをダブルクリックで隣接データまで自動コピー(空セル時は注意)。
VBA好きなら↓
Sub test()
Dim ws As Worksheet
Dim targetSheet As String ' 集計シートの名前(例: "年間集計")
Dim startCol As String ' 開始列(例: "B")
Dim startRow As Long ' 開始行(例: 2)
Dim endRow As Long ' 終了行(例: 13)
Dim refRow As Long ' 各月シートの参照行番号(例: 7, 8...)
Dim i As Long
' 設定値 - 必要に応じて変更
targetSheet = "Sheet1" ' 集計シートの名前
startCol = "B" ' 開始列
startRow = 2 ' 開始行
endRow = 13 ' 終了行(12ヶ月分)
refRow = 7 ' 最初に参照する行番号
Set ws = ThisWorkbook.Sheets(targetSheet)
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 0 To endRow - startRow
Dim monthNum As String
Dim formula As String
monthNum = i + 1
formula = "='" & monthNum & "'!$C$" & (refRow + i)
ws.Range(startCol & (startRow + i)).Formula = formula
Next i
For colOffset = 0 To 5 ' C列以外も(0ならC列のみ)
formula = "='" & monthNum & "'!$" & Chr(67 + colOffset) & "$" & (refRow + i)
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "数式入力を完了しました!(B2:B13に'1'!$C$7〜'12'!$C$18)"
End Sub
(稚拙) 2026/01/17(土) 12:23:54
質問者さんへ: 使用しているExcelのバージョンを書いて下さい。使える道具が変わってきますので。
稚拙さんへ: 手作業での方法はご自分で動作確認されたものでしょうか。
(xyz) 2026/01/17(土) 13:36:50
=INDIRECT("'" & ROW(A1) & "'!$C$7")
などとして下にコピーする方法があると思います。
(xyz) 2026/01/17(土) 14:24:12
(初心者) 2026/01/17(土) 15:06:29
(?) 2026/01/17(土) 15:28:33
(?)さんフォローありがとうございました。
一番ありがちなのは、シート名の前後に半角スペースなどが混入しているケースです。 確認して下さい。 私は実際に動作することを確認したうえで、投稿しています。
(xyz) 2026/01/17(土) 16:55:16
> (#REF!)になってしまいました。 この件は結局どういうことだったのですか?原因です。 #REFは出なくなったのですか?どのシートがエラーになっていて、 実際のシート名はなんだったのですか? ひとつひとつ、お互いに情報をきちんとやりとりしませんか?
集計表のどのセルに、どのような式を入れたのか、はっきり書いてください。 きちんと書いてくれないと、どんな間違いをしているのか分からないです。
(xyz) 2026/01/17(土) 18:24:44
>1月の給与収入欄のセルはC5で12月はN5になっています。 シートによりセル参照が変わるの? 1月···C5 2月···D5 · · 11月··M5 12月··N5 ですか? =INDIRECT(ADDRESS(5,ROW(A3),,,ROW(A1))) (はてな) 2026/01/17(土) 18:39:43
2024なら
=INDEX(VSTACK('1:12'!C5:N5),SEQUENCE(12),SEQUENCE(12))
コピペ不要
でも可能だと思います
(はてな) 2026/01/17(土) 19:02:15
改めて最初の質問を読むと、 > たとえば、集計表のB2〜B13のセルには ='1'!$C$7 〜 ='12'!$C$7 の数式を入れて、 > その下の行のC2〜C13には ='1'!$C$8 〜 ='12'!$C$8 以下同様の数式がかなりあります。 となっていて、 ・行 ・列 の考え方が理解されていないようです。 あらためて、正確に、実行したいことを説明し直して貰えますか?
A列 B列 C D
1行
2行
3行
という形式で説明して下さい。
(投稿にあたっては、行の先頭を半角スペースにするとレイアウトが崩れにくいです。)
(xyz) 2026/01/17(土) 19:11:20
B列 C列 D列......... N列
5行目 項目名1 ='1'!$C$7 '2'!$C$7.....'12'!$C$7
6行目 項目名2 ='1'!$C$8 '2'!$C$8.....'12'!$C$8
7行目 項目目3 ='1'!$C$9 '2'!$C$9.....'12'!$C$9
上のように形になるようにしたいのです。
(初心者) 2026/01/17(土) 19:41:12
1) C5:
="^'"&COLUMN(A1)&"'!c"&6+ROW(A1)
と入力
2) 右方・下方へフィル
3) 全対をコピーして値貼り付け
4) Ctl+H で検索文字列に ^, 置換文字列に = で全て置換
Indirectなら(自分自身では使用しませんが)
C5:
=INDIRECT("'"&COLUMN(A1)&"'!c"&6+ROW(A1))
として右方・下方へフィル
(jindon) 2026/01/17(土) 20:19:12
(1)
INDIRECTを使う方式であれば、
C5セルに
=INDIRECT("'" & COLUMN(A1) & "'!$C$7")
として右にコピーします。他の行も同じです。
(2)
はてなさん提案のHSTACK関数を使うなら、
集計表のC5:N7をいったん消去して、何も書かれていない状態にしてください。
そのうえで、
C5セルに
=HSTACK('1:12'!C7:C9)
と入れると、求めるものになると思います。
C5:N7の他のセルはスピルして表示されると思います。
# 衝突しましたので重複していたら失礼。
(xyz) 2026/01/17(土) 20:35:18
INDIRECT関数は「揮発性関数」のひとつであり、 ワークシート上のどこかのセルが変化すると、 それがINDIRECT関数の中身に直接関係がなくても再計算が発生します。 ですからそれを多用したりすると動作が遅くなることが考えられ、要注意です。 (私も実際に使ったことはありません。まあ、Excel自体を触ることは殆ど無いのですけど) できるだけINDIRECT関数を使わずにすむなら、そのほうがよいでしょう。
=HSTACK('1:12'!C7:C9)は少し勉強しないといけませんが、簡便ですし、使い勝手がよいと思います。
(xyz) 2026/01/17(土) 21:53:26
[ExcelのVSTACK関数/HSTACK関数とは?VBAを使わずに複数シートのデータを 1 シートで表示]
https://exceljoshi.cocoo.co.jp/media/excel-vstack-hstack
(xyz) 2026/01/18(日) 08:29:26
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.