質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Q&A

解決済

1回答

1971閲覧

Googleフォームにて勤怠管理

Lemon

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

0グッド

1クリップ

投稿2022/02/06 13:11

編集2022/02/06 13:17

Googleフォームにて勤怠管理をしようと思っています。
現在試験的にスタッフさんには、出退勤時にフォーム入力してもらっています。
フォームの出力シートのタイムスタンプ、スタッフ名、出勤、退勤これらの情報をもとに
別のスプレッドシート(勤怠管理用)に出勤時間、退勤時間を出力。
出退勤時間をもとに休憩時間、実働時間をするようにしています。
勤務しない日もあるのでエラーが出たときは0を出力するようにしました。

=IFERROR(vlookup($B$5&$B$6&A41,IMPORTRANGE("1qmTt7Yx4MLM62oWCGrlNZZ7Wzb8MwWTnhXMKmAau0tw","フォームの回答 1!I:L"),3,0),0)
ベースとなる式がこちらになります。

$B$5&$B$6&A41:スタッフ名&勤務日&出勤または退勤
IMPORTRANGE関数でフォームの出力シートを参照
VLLOUP関数でフォーム出力シートの指定の位置を勤怠管理用シートに反映
エラーが出たと来ようにIFERROR関数を使用しました。
このシートは無事に動作確認できました。

しかし、この動作確認シートを原本とし、各スタッフごとに原本をコピーすると
すべての数式が動かず、コピーしたスタッフごとの勤怠管理シートはすべて計算結果は0となってしまいました。
数式が原本とコピーしたものに相違ないのも確認しております。

なぜ、コピーしたものが動作しないのでしょうか?
スプレッドシートのシステムの問題なのでしょうか?
IFERRORの定義が間違っているのでしょうか?

ご教示いただけると助かります。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

なぜ、コピーしたものが動作しないのでしょうか?
スプレッドシートのシステムの問題なのでしょうか?

 
ある意味スプレッドシートのシステムの問題と言えるでしょう。

IMPORTRANGEが書かれている原本シートをコピーした場合、
「コピーによって新規作成されたシート」の中のIMPORTRANGEは、初期状態ではアクセスが許可されていません

そして、IFERROR関数は、当該IMPORTRANGEのアクセス権がない状態を隠蔽してしまいます

この結果、コピーしたシートの表示が0になっているものと推測されます。

したがって、正しく計算結果を原本と同じように表示させるには、下記の操作が必要になるものと思われます。

1.コピーして新規作成したシート内にある式のうち、どれか1つでいいので、IMPORTRANGEを囲っているIFERROR式を外す。
(質問を例にとれば、

=IFERROR(vlookup($B$5&$B$6&A41,IMPORTRANGE("~~","フォームの回答 1!I:L"),3,0),0)

のような式からIFERRORを外して

=vlookup($B$5&$B$6&A41,IMPORTRANGE("~~","フォームの回答 1!I:L"),3,0)

にする、という意味です)

2.1の操作により、セルの表示が#REF!となるはずなので、クリックし、「アクセスを許可」ボタンを押すという操作を行う。
イメージ説明
※1つのシート内に関して言えば、すべてのセルについて行う必要はなく、どれか1つのセルさえ許可すれば、自動的に同じシートをインポートしている他のセルにもアクセス権限が付与されるようです。
ただしコピーしたスプレッドシートの数だけ同じ操作を行う必要はあります。

投稿2022/02/06 13:50

編集2022/02/06 14:02
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lemon

2022/02/06 14:41

回答ありがとうございます。 「IFERROR関数は、当該IMPORTRANGEのアクセス権がない状態を隠蔽」 こういった事象があるのですね。 とても勉強になりました。 教えていただいた通り、アクセス許可したらすべて計算結果が反映されました。 今まで悩んでいたのが信じられないです。 本当にありがとうございます。 Googleアプリケーションはとても便利だなと感じておりますので、もっと勉強してきます! この度は本当にありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問