同一のExcelファイル中に、30シートあるとします。
これらはどれも同じフォームで、全てのシートの同座標セルに連番をとりたいとします。
その連番のナンバーは、31番目のシートに一覧になっています。
この30ものシートの同座標セルから、31番目の一覧にひとつずつズレて参照させるには、どうしたらいいでしょうか。
例)
1シートA1に、31番目シートA1の「No.1-1」
2シートA1に、31番目シートA2の「No.1-2」
※ちなみに、30シート分のフォームが既にあり、後で一覧のシートを追加するという前提です。
今は一つずつのシートを開けて、31番目シートの一覧へ、一つ一つリンクさせているだけです。
でも、これをやってるとシートが多くなると面倒なんですよね。
多分一括で出来るやり方がExcelにはあると思うんです。
ただし、私はVBはまったくの素人なので、表示形式や関数で教えていただけると嬉しいです。
また、なぜそういうやり方になるのかも、お勉強のために解説していただけると尚嬉しいです。
よろしくお願い致します。
No.1
- 回答日時:
> 1シートA1に、31番目シートA1の「No.1-1」
> 2シートA1に、31番目シートA2の「No.1-2」
シートを複製して追加していくので、「1シート!A1」「2シート!A1」には同じ式を入れたいという事だと思います。
Excelのワークシート関数で「シート名」「シート番号」を取得できるものが無いようですので、ワークシート関数、書式設定だけで対処するのは難しいです。
VBAを使って「シート名」「シート番号」を返すユーザー定義関数が作れれば対処可能なのですが…。
--
1シート!A1に1
2シート!A1に2
…
などと入っているという前提であれば、
B1:=INDIRECT("31番目シート!A"&A1)
で「31番目シートのA<A1セルの番号>の値」が参照できます。
neKo_deuxさん、回答ありがとうございます。
そうですか、VBじゃないと難しいんですね・・・
Excelなら、入力規則のリストとか、IF関数とかで何とかなるんじゃないかと期待してたんですけど(-_-;)
でも教えていただいたVBで、素人感覚ながらちょっと頑張って作って見ようかと思います。
もうどうせ既に作成済みのものだし、のんびりやってみます。
どうもありがとうございました。
No.2ベストアンサー
- 回答日時:
(1)Sheet31!A1をコピーして、他のシートのA1にコピーしても、式のA1のAや1の部分は変化しません。
同一シート内で式を下方向や右方向へ複写する時の番地の変化の機能が使えません。(2)Sheetをなべてすべて指定するのはCTRLを押しながら全てのシート名のタブをクリックする方法でしょうが、それをしても、そもそも式がコピーされるわけでもありませんし、むろんSheet1!A1の1の部分が2、3、・・・と変化しません。
(3)持ってくる番号はSheet31のA1:A30に固まって存在しても、値を受ける(セットされる)べき方(セル)が、「各シートのA1」と言う風にバラバラですから、エクセルでは一気にデータ(番号)を持ってくることが出来ません。
>多分一括で出来るやり方がExcelにはあると思うんです
--->従って、上記の理由からありません。
(5)関数式は取ってくる方(セル)に設定しないといけません。
本質問では、各シートのA1セルです。
それに値を持ってくるのに、複写機能等が使えない以上、1つ1つ人手でセットせざるを得ません。
Sheet31のA1やA2のセルからSheet1のA1やSheet2のA1に値を「飛ばす」わけにいきません。
ところが、VBAではこれが出来ます。
(値を受けるセル)=(値を渡すセル){右辺から左辺へ代入する}とプログラムコードで表現出きるからです。
それと(値を受けるセル)と(値を渡すセル)を30個書き並べるのでなく、1行だけを書き、1から30まで変化させて、値代入を実行せよとプログラムでは表現できます。ここが便利なところです。
>VBじゃないと難しいんですね・
--->そうです。
>教えていただいたVBで、素人感覚ながらちょっと頑張って作って見ようかと思います。
-->#1のご解答の、どこにもVBAのコードはないのでは。
一例はシート数を少なくして、Sheet1からSheet4までの各々のA1に、Sheet5のA1:A4までに入った番号(でなくてもなんでも可)をセットする例をあげます。
Sub test01()
Dim sh As Worksheet
i = 1
For Each sh In Worksheets
If sh.Name <> "Sheet5" Then
sh.Cells(1, "A") = Worksheets("sheet5").Cells(i, "A")
i = i + 1
End If
Next
End Sub
を標準モジュールに貼りつけて実行すると良い。ただしシートタブの左からの順番により決定されます。
この回答への補足
本日ためしにやってみたところ、見事出来ました!
シートは既に50に増えたんですが、ちゃんと50個のシート全てに一括ナンバリング出来ましたよ。
いまいち言語は分かりませんが、この形態だけは、どう座標を変えれば反映されるか分かったみたいです。
本当にどうもありがとうございました。
imogasiさん、回答ありがとうございます。
とても丁寧に詳細に教えていただけて嬉しいです。
ですが、自宅PCにOfficeが入ってないので(^^;)、ぜひ会社で検証してみようと思います。
不勉強なVBでも、なんとかなりそうなので、今後の作業が楽になれそうですよ(^^)
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Excel(エクセル) 【Excel関数】値が合致するセルの隣のセルを表示させたい 8 2022/10/12 17:44
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
Excel、同じフォルダ内のExcel...
-
前の(左隣の)シートを連続参...
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
エクセルVBAでパスの¥マークに...
-
Excelのシートを、まとめて表示...
-
VBAでシートコピー後、シート名...
-
エクセルで前シートを参照して...
-
エクセルで前のシートを連続参...
-
EXCEL:同じセルへどんどん足し...
-
エクセルでファイル保存時に複...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルのシート名をリスト化...
-
Accessのスプレッドシートエク...
-
別シートの最終行に貼り付けす...
-
複数シートの特定の位置に連番...
-
VBAで条件によりフォントサイズ...
-
excelでシート毎の最終更新日を...
-
エクセルで「ウィンドウを元の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで1ヶ月分の連続した日付...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
EXCELで同一フォーマットのシー...
-
エクセルで前のシートを連続参...
-
エクセルで前シートを参照して...
-
VBAでシートコピー後、シート名...
-
Accessのスプレッドシートエク...
-
エクセルのシート名をリスト化...
-
複数シートの特定の位置に連番...
-
Excelのシートを、まとめて表示...
-
エクセル 計算式も入っていない...
-
スプレッドシートの関数VLOOKUP...
おすすめ情報