別シートへのコピペから卒業!複数行をIMPORTRANGEで1行にまとめる

毎月の別ファイルへのデータ入力、手作業だと大変ですよね。
スケジュールや勤怠管理といった毎月シートが増えるものは、IMPORTRANGEを使ってもシート名を変えるのは手間です。

すぐに解決したい方は、次の数式とポイントだけ押さえればOK!

まずは、別ファイルのデータを引っ張ってきて、シート名も関数で指定する基本の形です。
=IMPORTRANGE("ファイルのID", "シート名!範囲")

ここの “シート名” は、関数を使って可変にできます。
手元のシートのA1セルに「2026年1月1日」の日付データが入っているなら、こう書くだけで毎月自動で切り替わります!
=IMPORTRANGE("ファイルのID", TEXT(A1, "yyyymm") & "!B2:D31")

応用として、「複数行のデータを1行にまとめる」といった複雑な処理も一気に解決できます。
場所が決まっているなら、{}(波括弧)と ;(セミコロン)を使って、以下のように書くだけで範囲を縦につなぎ合わせることができます!

={IMPORTRANGE("ファイルのID", "シート名!A1:A30"); IMPORTRANGE("ファイルのID", "シート名!B1:B30")}

さらに、縦に合体させた時にできる「空白の行」を詰めて表示したいときは、ここで QUERY 関数が使えます!

=QUERY({IMPORTRANGE("ファイルのID", "シート名!A1:A30"); IMPORTRANGE("ファイルのID", "シート名!B1:B30")}, "where Col1 is not null")
(※ “where Col1 is not null” が、参照したデータから「空白の行は詰めて表示してね」という指示になります)


うまくデータが引っ張ってこれない?ファイルの指定と共有設定

数式を入れたのにうまく動かない場合、以下の2つを確認してみてください。

1. コピーするURLは「ID部分」だけでスッキリ!
関数の中にURLを全部入れても動きますが、数式が長くなって非常に見づらくなります。
https://docs.google.com/spreadsheets/d/【ここの英数字】/edit#gid=0
このように、URLの /d//edit の間にある英数字(ファイルID)だけをコピーして使えばスッキリします(「/edit」以降は不要です)。

2. セルが #REF! とエラーになる
ファイル間のアクセス権限が繋がっていません。
セルにカーソルを合わせると「アクセスを許可」という青いボタンが出るので、それを押せば解決します。ボタンが出ない場合は、転送元のファイルの右上「共有」ボタンから、自分のアカウントに閲覧権限などを付与してください。

共有設定をしたときの知らぬ間のリスク

会社と個人など、違う環境同士でファイルをリンクさせる時、つい「リンクを知っている全員」に設定をしちゃいますよね。

ただ、ここで権限を「編集者」にしてしまうと、URLがチャットの誤送信などで全く別の人に渡ってしまった時に、間違ってデータを消されたり、書き換えられてしまうリスクがあります。
いじられるのを防ぐために、まずは「閲覧者(参照のみ)」にしておきましょう。


さらに周りに差をつけるQuery関数の応用

先ほど空白を詰めるために使った QUERY 関数は、条件を指定してデータを絞り込むのが得意です。

たとえば、まとめたデータの中から「一番左の列が『完了』になっているものだけ持ってくる」といった条件を設定するなら、こう書くだけです!

=QUERY({IMPORTRANGE(...); IMPORTRANGE(...)}, "select * where Col1 = '完了'")

ここで1つ、エラーになりやすい「列の指定ルール」について解説します。

【Col(列)の数え方の注意点】
別ファイルから持ってきたデータは、「A列」や「B列」というアルファベットでは指定できません。代わりに「Col1」「Col2」と書くのですが、これは『持ってきた範囲の左から数えて何番目か』で決まります。

  • A列〜C列を持ってきた場合:A列が「Col1」、B列が「Col2」
  • E列〜G列を持ってきた場合:E列が「Col1」、F列が「Col2」

このように、どこから範囲を指定しても「一番左がCol1になる」というのが最大のポイントですね。

コメント

タイトルとURLをコピーしました