プロが教える店舗&オフィスのセキュリティ対策術

具体的に言いますと、、、
シート1:A1セル=「シートあ:A1」
シート2:A1セル=「シートあ:A2」
シート3:A1セル=「シートあ:A3」

まずは、シート1を作成して、それを元にシートを増やしていきたいと考えています。
参照元「シートあ」の、行なり列なりを、シート毎にずらすような関数はありますか?
関数ではなくても、何か方法はありますか?
どなたか、ご存じの方教えて下さい。宜しくお願い致します。

質問者からの補足コメント

  • 質問の説明が不十分、わかりづらいようで申し訳ありません。
    もう少し具体的に説明させて頂きます。
    「シート1~3」は同じ様式で、参照元のセルだけ、シート毎に規則的にずれさせたいのです。
    給料明細用のファイルがあります。
    その中の1シートが賃金台帳(シートあ)です。
    給料明細1月分の基本給のセル(シートA:A1)は、賃金台帳1月分基本給(シートあ:A1)を参照します。
    給料明細2月分の基本給のセル(シートB:A1)は、賃金台帳2月分基本給(シートあ:A2)を参照します。
    給料明細3月分の基本給のセル(シートC:A1)は、賃金台帳3月分基本給(シートあ:A3)を参照します。
    という内容です。
    これを、シートをコピーする度に自動的にずれさせられたら、便利だな、と思っての質問でした。

    素人でもわかる方法がありましたら、宜しくお願い致します。

      補足日時:2020/03/06 15:13
  • うーん・・・

    ※質問と補足でシート名を間違えてしまって申し訳ありません
    「シート1」=「シートA」です。以下、「シート1」で統一させて頂きます。

    >「INDIRECT関数」
    この関数は質問内容の「シート1」のセルに「シートあ」の数値を反映させる時の関数かな、と思いましたが違いますでしょうか?
    今まで、この関数を使ったことはないのですが、単純に「シート1:A1セルに<=(シートあ:A1)>クリック」で反映させていました。
    なので、「シート1」を作ることはできています。
    この作った「シート1」をコピーした時に自動的にセル番号が変わらないかな、と考えています。

    INDIRECT関数に関するページをいくつか読んでいるのですが、複数シートの数値それぞれを1シートに反映させる方法は書いてあるのですが、1シートから複数シートに反映させる方法が見つけられずにいます...

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/03/06 17:51
  • 何度もありがとうございます。
    読ませて頂きましたが、今すぐには理解できませんので、再度、実践しながらやってみます。
    また、改めてお礼をさせていただきます。

    No.4の回答に寄せられた補足コメントです。 補足日時:2020/03/07 07:56

A 回答 (4件)

=CELL("filename",A1)


と入力する。
これで、
 C:\Users\cocoamark\Documents\[exsample.xlsx]シート1

…だろ?
あとはここから「シート1」の部分の「1」を取り出せば良い。
取り出し方は面倒だからRIGHT関数で切り出す例を示してみます。
 =RIGHT(CELL("filename",A1),1)
これで
 C:\Users\cocoamark\Documents\[exsample.xlsx]シート1
の文字列の一番右の文字「1」だけを切り出せる。
 C:\Users\cocoamark\Documents\[exsample.xlsx]シート2
だったら「2」が返ってくるということです。
2桁になった場合を考慮して別の方法を使ってください。


・・・なぜかINDIRECT関数のレクチャー・・・

で、INDIERECT関数。
これは、文字列でセル番地を指定できる関数です。
 B10セルに "F25" と文字、
 B11セルに 「25」 と数値、
 F25セルに "おめでとう" と文字列、
…が入力されていた場合、
 =INDIRECT(B10)
とすると、B10セルの文字列 ”F25” をそのままセル番地として参照する。
すると
 =INDIRECT(B10)
  ↓
 =INDIRECT("F25")
  ↓
 =F25
  ↓
 "おめでとう"
と処理が行われ、値が返ってくる。

これの応用で、
 =INDIRECT( "F" & B11 )
とすると、
 =INDIRECT( "F" & B11 )
 =INDIRECT( "F" & 25 )
 =INDIRECT( "F25" )
 =F25
 "おめでとう"
となる。
OK?難しくないよね。

B11セルの「25」という数値を変えてやれば、F列の別の行の値を参照できるってことです。
 =INDIRECT( "シートあ!A" & RIGHT(CELL("filename",A1),1) ) )
とすれば、「シートあ」のA1セルやA2セルをシート名から指定することができるってわけです。


・・・【投げやりな回答】(質問者さんはこれだけが欲しいのだろうと思う)・・・

ひな形を理解して無くてあとで困ることになるのは質問者さん(とその関係者)なんだから、まあ良いか。
分かったつもりにさせちゃおう。
 =INDIRECT("シートあ!A"&MID(CELL("filename",A1),FIND("シート",CELL("filename",A1),1)+3,2))
これを「シート1」から「シート12」までのA1セルに書き込めばいい。
そうすれば、1月から12月までの賃金台帳当月分基本給を参照できる。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとう

>【投げやりな回答】
書いて下さった数式にシート名等入力してみましたが、#VALUE!になってしまいます。
どこかの指定を間違えてるんでしょうね...
せっかく教えて頂きましたので、値が返ってくるようにもう少し頑張ってみます。

本当に、何度もご丁寧にありがとうございました!

お礼日時:2020/03/07 16:38

>(数字が増えるだけなら、数字だけを切り取ってINDIRECT関数に渡すという方法が分かりやすいでしょう)



……なんかこれがクリティカルヒットしている気がするんだけど、ダメ?

・・・
素人さんということであれば、代行業者に作成依頼することを強く勧めます。
ええ、対価を支払ってね。
(ここは作成依頼をする場所ではなく自分で解決できるようにアドバイスをもらう場所です)
何の責任も負わない第三者が作ったものをそのまま使うなんて怖いことしちゃダメだぞ。
自分で作れるようになりましょう。でなければお金を払って作ってもらいましょう。
この回答への補足あり
    • good
    • 0
この回答へのお礼

度々ありがとうございます。

>INDIRECT関数に渡す
この関数が初めてでしたので、webページを参考にしながら試し試しやっています^^
エクセルは独学で勉強中です。
周りにできる人はいても、私の知りたいことがわかる人がいなくって...

給料明細と言っても数名分なので、1セルごと参照させても大した時間はかからないのですが、せっかくエクセルを使うなら、と思って質問させて頂きました。
ありがとうございました。

お礼日時:2020/03/06 15:49

CELL関数でシート名を取得してみよう。


あとはいろいろと工夫すればOK。

シート名を取得したいシートの空いているセルに、
 =CELL("filename",A1)
と入力する。
これで、
 C:\Users\cocoamark\Documents\[exsample.xlsx]シート1
…のような感じに値が返ってきます。
(新規にシートを追加した場合は、上書き保存など一度「保存」をしないと反映されないことがあります)

工夫…はシートの追加に関わる条件によるので、質問文からはちょっと具体的な方法のアドバイスは無理。
(数字が増えるだけなら、数字だけを切り取ってINDIRECT関数に渡すという方法が分かりやすいでしょう)
    • good
    • 0
この回答へのお礼

一度試してみます!
ありがとうございました。

お礼日時:2020/03/06 11:54

こんにちは!



後半部分は無視して・・・
単に各シートのA1セルに「シートあ」のA1以降のデータを順に表示する方法です。

VBAになりますが、一例です。
尚、「シートあ」はシート見出しの一番最後(一番右側)にあるという前提です。

標準モジュールにしてください。

Sub Sample1()
 Dim k As Long
 Dim wS As Worksheet

  Set wS = Worksheets(Worksheets.Count)
   For k = 1 To Worksheets.Count - 1
    Worksheets(k).Range("A1") = wS.Cells(k, "A")
   Next k
End Sub

とりあえずは質問文の最初の操作はできていると思います。m(_ _)m
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
私にはVBAの知識が全くありません。
それ以前にエクセル自体基礎的な操作程度しかできてないと思います。

もう少し簡単な方法がありましたら、ご教授頂けますと幸いです。
宜しくお願い致します。

お礼日時:2020/03/06 11:17

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

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


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