【IMPORTRANGE関数】基本的な使い方とVLOOKUP関数との合わせ技

この記事では、スプレッドシートのオリジナル関数であるIMPORTRANGE関数について、

フリーのサンプルスプレッドシートの紹介をして、IMPORTRANGE関数の基本的な使い方を紹介

VLOOKUP関数との合わせ技を実演

オススメ動画の紹介

について掲載しております。

IMPORTRANGE関数の引数(関数に「この条件でお願いしてね」って伝える内容)は、たった2つだけです。

★ IMPORTEANGE関数の引数 ★

引数その1: サンプルのスプレッドシートのURLまたはID

引数その2: シート名と範囲

それでは早速使ってみましょう。
まずは、ご自身のスプレッドシートを用意します。

Googleの検索欄に

sheet.new

で新しいスプレッドシートの作成が可能ですし、既存のスプレッドシートに新しいシート(ショートカットキーは[F11] で新しいシートが追加出来ます。)を用意します。

今回使うサンプルデータは、Google Cloud Partner Specialization 認定パートナーのイーディーエル株式会社 様が「どうぞ、ご自由にご活用ください」と公開されている、下記のサンプルデータを使います。

この記事では、このシートを使って学習を進めて行きます。

★Google For Education_成績管理・分析サンプルデータ

このサンプルデータのシート「 1学期の英語小テスト結果 」を使います。

上記のサンプルデータは、「閲覧のみ」になっているので、シート名をコピペ出来ないため、

1学期の英語小テスト結果

↑の文字列をコピーして使って下さい、と、このブログの後述の必要な箇所に掲載しております。

まずはご自身の新しい(空白な)スプレッドシートに

=importr

と入力して[Tab]キーを押すと、

=IMPORTRANGE(

このように補完されました。importrange関数は関数の名前が長いので、スペル覚えるのが面倒なので、Tabによる補完は有り難く利用させて頂いております。

このあと、“(ダブルクォーテーション)で囲って、サンプルのスプレッドシートのIDとシートの範囲を指定します。

IDには、

URLのdの直後の「/」と「/」の間

を使います。

この例ですと、サンプルのスプレッドシートのURLが

https://docs.google.com/spreadsheets/d/17BmFEjySVCBZwzU5bByq1DrE4FMvyQyHM115qVFimRs/edit#gid=1271672649

ですので、

17BmFEjySVCBZwzU5bByq1DrE4FMvyQyHM115qVFimRs

この部分が該当します。

それでは、これをIMPORTRANGE関数の引数として入れて行きます。

=IMPORTRANGE(“17BmFEjySVCBZwzU5bByq1DrE4FMvyQyHM115qVFimRs”,“

これで、最初の引数のIDの指定が完了しました。
2つ目の引数を入れるので、「カンマ」と「ダブルクォーテーション」も打ちました。

では最後、2つ目の引数である、シートの範囲を入れて行きます。

シート名は先に述べたように、サンプルの権限が「閲覧のみ」なので、シート名をコピペ出来ないので、

必要な箇所に掲載致します、こちらのシート名

1学期の英語小テスト結果

↑の文字列をコピーして使って下さい。

それでは、実際に2つ目の引数を入れて行きます。

=IMPORTRANGE(“17BmFEjySVCBZwzU5bByq1DrE4FMvyQyHM115qVFimRs”,”1学期の英語小テスト結果!

シート名の後に「 !(半角のビックリマーク)」を入れます。

その後に、A列からO列までの範囲が欲しいので、

=IMPORTRANGE(“17BmFEjySVCBZwzU5bByq1DrE4FMvyQyHM115qVFimRs”,”1学期の英語小テスト結果!A:O”)

と入力して、ダブルクォーテーションを閉じたら完了です。
「REF」というエラーが出た方は、クリックして閲覧を許可して下さい。

こんな感じで、他のスプレッドシートにあるデータを自分の所に引っ張ってこれました。

これが基本の使い方です。


では次に、このIMPORTRANGE関数を、VLOOKUP関数の範囲として使ってみたいと思います。

ご自身のスプレッドシートに、新しいシートを追加します。

サンプルの生徒さんの中から、適当な生徒さんの番号を数人選んでコピー&ペーストをして、この様な表を作りました。

(生徒番号はコピペか、「’0202」の様にシングルクォーテーションを入れると、VLOOKUPの検索キーとして使えます。

「202」と入力してカスタム数値形式で「0000」としても、上手く動作しませんでした。)


生徒さん名前(2列目)と5月10日の点数(6列め)をVLOOKUP関数とIMPORTRANGE関数を使って、引っ張ってきてみます。

それでは、上のシートのB2の所に、VLOOKUP関数を使って、範囲にIMPORTRANGE関数で指定します。

=vlookup($A2,importrange(“17BmFEjySVCBZwzU5bByq1DrE4FMvyQyHM115qVFimRs”,”1学期の英語小テスト結果!A1:O17″),2,false)

シート名と範囲はこちらからコピーをしても使えます。
↓

“1学期の英語小テスト結果!A1:O17″

こんな感じで、VLOOKUP関数の中にIMPORTRANGE関数をネストして範囲として指定しました。

生徒番号が入っているA列は固定するので、列固定の複合参照となり、F4キーを3回押して、$A2とします。

見事、拓海くんの名前が入りましたので、他の場所にコピーをします。

この状態で、[Ctrl]+[D]を押すと、数式が下までコピーされます。

こんな感じで、他の生徒さんの名前も引っ張ってこれました。

ここで1つ疑問が生じます。
生徒番号のところでは、$マークを使って列固定にしたのに、IMPORTRANGE関数の中では、表の範囲を絶対参照にしていないのに、なぜ範囲がずれていないのか、です。

これについては、URLのIDを指定して他のファイルから持って来ているので、参照範囲はずれないという仕様になっております。

それでは、上の表のC列目の「5月10日の点数」も入れてみます。

お隣のセルC2を選択して、[Ctrl]+[R]を押すと、「拓海くん」の名前が入りますので、VLOOKUP関数の列を2列から6列に変更します。
(5月10の所は、2を6に変えるだけです。)

=vlookup($A2,importrange(“17BmFEjySVCBZwzU5bByq1DrE4FMvyQyHM115qVFimRs”,”1学期の英語小テスト結果!A1:O17″),6,false)

これで、同様に下のセルまで数式をコピーすると、5月10日の点数も求まりました。


最後に、Googleの神様、G神と呼ばれている、牛乳屋さん社長のにっしー氏の動画のIMPORTRANGE関数を使ってグラフを反映させる方法を、上記のサンプルを使ってやってみます。

(私は、ただの1視聴者であり、にっしー社長とは面識がございません。)

サンプルデータは閲覧のみですが、シートをコピーすることは出来るので、動画の手順に沿ってコピーします。

それで、

=IMPORTRANGE(“17BmFEjySVCBZwzU5bByq1DrE4FMvyQyHM115qVFimRs”,”1学期の英語小テスト結果!A:O”)

と入れると、無事にグラフも反映出来ました。


ご精読、誠に有難うございました。

スプレッドシートのオススメ本を紹介いたします。

単行本(ソフトカバー)
Kindle版

殆ど障害者雇用や発達障害の悩みについての内容ですが、厳選してスプレッドシートやExcel等の「障害者雇用のお仕事で特に役に立ったショートカットキー」についても掲載しております。

Kindle版

お疲れ様でした。ブレイクタイムPhotoは、

地元、東京下町の遊歩道の桜です。


初めてのスプレッドシートに戻る
写真クリエイターとしての活動


自己紹介

paiza レベルアップ問題集 標準入力その5「STEP: 1 1 つの整数の入力」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、Pythonで標準入力を使って1行の整数を取得する方法が学べます。

取得する対象が整数ですので、intの中にinputを用います。
GASではスプレッドシートで値を取得して出力しています。

このコーナーでは、プログラミング学習コンテンツpaizaラーニングのレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、ご安心なさって下さい。)


1 つの整数の入力 (paizaランク D 相当)

問題:
整数 a が与えられるので a を出力してください。

ではまず、Pythonで解いてみます。


手順として、

1:標準入力で整数を取得する

2:取得した整数を出力する

の2ステップで行います。

今回は下記の入出力例1を用います。

入力例1
813

出力例1
813

まず、準備として、paiza.ioにこのように入力します。
(入力例1をコピペしたのみ)

下記のコードで入力と出力を行います。
コメントに書いてある通り、整数を標準入力で取得したい時はintの中にinputを入れたコードを書きます。

#整数を標準入力で取得する為、intとinputを使用する
a=int(input())
print(a)

このコードの実行(出力)結果です。

Pythonは以上です。

次は、GASで解いて行きます。


今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

緑色のセルB1(1,2)に入力した整数を取得して、それを黄色いセルB3(3,2)に出力します。

手順はこのようになります。

1:SpreadSheetAppから階層を辿って現在のシートにアクセスする

2:緑色のセルB1(1,2)の整数を取得してaに格納


3:スプレッドシートの出力前にaを取得できたことをログ出力で確認する


4:スプレッドシートの黄色いセルB3(3,2)にaを出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

このコードを関数「standardInput1」の中に書いて行きます。

Standard Inputで標準入力の意味です。

function standardInput1() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

}

手順2:緑色のセルB1(1,2)の整数を取得してaに格納

const a=ss.getRange(1,2).getValue();

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルB1(1,2)の整数を取得してaに格納
  const a=ss.getRange(1,2).getValue();

}

手順3:スプレッドシートの出力前にaを取得できたことをログ出力で確認する

console.log(a);

コードと実行結果です。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const a=ss.getRange(1,2).getValue();

  //スプレッドシートの出力前にaを取得できたことをログ出力で確認する
  console.log(a);

}

手順4:スプレッドシートの黄色いセルB3(3,2)にaを出力する

ss.getRange(3,2).setValue(a);

コードと実行後のスプレッドシートです。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const a=ss.getRange(1,2).getValue();
  console.log(a);

  //スプレッドシートの黄色いセルB3(3,2)にaを出力する
  ss.getRange(3,2).setValue(a);

}

GASは以上です。


お疲れ様でした。ブレイクタイムPhotoは、

遊歩道の桜です。

標準入力その4へ           次の問題へ→

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力5」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

paiza レベルアップ問題集 標準入力その4「FINAL問題 【整数の行入力】1,000行の整数の入力」をPythonとGASで解いたコードの紹介

この記事を読むことで、Pythonで標準入力を使って、ループを用いて1000行の整数を取得する方法が学べます。

GASではスプレッドシートで値を取得して出力しています。

このコーナーでは、プログラミング学習コンテンツpaizaラーニングのレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、ご安心なさって下さい。)


【整数の行入力】1,000行の整数の入力 (paizaランク D 相当)

問題:
整数 a_1, a_2, … , a_999, a_1000 が 1,000 行で与えられるので a_1, a_2, … , a_999, a_1000 を 1,000 行で出力してください。

ではまず、Pythonで解いてみます。


手順として、

1:ループを使って標準入力で整数を取得し出力する

の1ステップで行います。

今回は下記の入出力例1を用います。

<入力例1>
1189
8004
7243
5507
3237
(省略)
・
・
・

<出力例1>
1189
8004
7243
5507
3237
(省略)
・
・
・

まず、準備として、paiza.ioにこのように入力します。
(入力例1をコピペしたのみ)

1000個の数字と長いので、最初と最後の5件のみの画像を掲載致します。

<最初の5行>

<最後の5行>

それでは、下記のコードで入出力を行います。
ループを1000回まわして、その中で標準入力で変数tempに代入して、tempを出力しています。

intをinputで囲っているのは、取り出す対象が「整数」だからです。

#ループ内で標準入力を使って1000行の整数を取得し出力する
for i in range(1000):
    temp=int(input())
    print(temp)

このコードの実行(出力)結果です。

<最初の5行>

<最後の5行>

Pythonは以上です。


次は、GASで解いて行きます。

今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

データを貼り付ける時、paizaの問題集の入力例1をコピーしてから、[Ctrl] + [Shift] + [V] のショートカットキーを使うと書式が保たれて貼り付けられます。

また、後ほどスクロールするので、1行目を固定してあります。
行番号を選択すると行全体が選択されるので、その状態で「表示」→「固定」→「行1まで」で固定出来ます。

<最初の5行>

<最後の5行>

緑色の列のセルA2(2,1)から始まる1000行分の所に入力した整数を取得して、それを黄色いセルC2(2,3)から始まる1000行分の所に出力します。

その際、この黄色く塗りつぶした列の所に、二次元配列として取得した整数が格納された配列を出力します。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:SpreadSheetAppから階層を辿って現在のシートにアクセスする

2:緑色のセルA2(2,1)から始まる1000行分の列の整数を取得して1000行の整数を二次元配列numに格納

3:スプレッドシートの出力前に1000行の整数が格納された二次元配列numを取得できたことをログ出力で確認する

4:スプレッドシートの黄色いC2(2,3)から始まる1000行分の列の所に二次元配列numを出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

このコードを関数「standardInput5」の中に書いて行きます。

Standard Inputで標準入力の意味です。

function standardInput5() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

}

手順2:緑色のセルの列の整数を取得して100個の整数を二次元配列numに格納

num=ss.getRange(2,1,1000).getValues();

緑色のセルA2(2,1)から1000行分のデータを取得することを意味しています。
1列ですので、(2,1,1000)で(2,1,1000,1)と最後の1は省略出来ますが、同様の結果を得られます。

function standardInput5() {
  
  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルの列の整数を取得して1000行の整数を二次元配列numに格納
  const num=ss.getRange(2,1,1000).getValues();

}

手順3:スプレッドシートの出力前に100個の整数が格納された二次元配列numを取得できたことをログ出力で確認する

console.log(num);

コードとログ出力結果です。

function standardInput5() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,1000).getValues();

  //スプレッドシートの出力前に1000行の整数が格納された二次元配列numを取得できたことをログ出力で確認する
  console.log(num);

}

1000行と長いので、最初の一部分のみのログ画像です。

手順4:スプレッドシートの黄色い列の所に二次元配列numを出力する

ss.getRange(2,3,1000).setValues(num);

実行後のスプレッドシートです。

function standardInput5() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,1000).getValues();
  console.log(num);

  //スプレッドシートの黄色い列の所に二次元配列numを出力する
  ss.getRange(2,3,1000).setValues(num);

}

<最初の5行>

<最後の5行>

GASでの解き方は以上になります。


お疲れ様でした。ブレイクタイムPhotoは、

石神井公園の池のサイクルボートから撮影した桜です。

←前の問題へ          標準入力その5へ

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力4」へ戻る
paizaレベルアップ問題集_ PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

paiza レベルアップ問題集 標準入力その4「STEP: 4 100 行の整数の入力」をPythonとGASで解いたコードの紹介

この記事を読むことで、Pythonでループを用いてループの中で標準入力を使って、100個の整数を取得する方法が学べます。

GASではスプレッドシートで値を取得して出力しています。

このコーナーでは、プログラミング学習コンテンツpaizaラーニングのレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、ご安心なさって下さい。)


100 行の整数の入力 (paizaランク D 相当)

問題:
整数 a_1, a_2, … , a_99, a_100 が 100 行で与えられるので a_1, a_2, … , a_99, a_100 を 100 行で出力してください。

ではまず、Pythonで解いてみます。

手順として、

1:ループを使って標準入力で整数を取得し出力する

の1ステップで行います。

今回は下記の入出力例1を用います。

入力例1
4090
4199
9064
6517
9620
・
・
・
(省略)
・
・
・
7940
452
7535
9976
4574

出力例1
4090
4199
9064
6517
9620
・
・
・
(省略)
・
・
・
7940
452
7535
9976
4574

まず、準備として、paiza.ioにこのように入力します。
(入力例1をコピペしたのみ)

100個の整数を全て表示するのは大変なので、最初の5つと最後の5つの画像です。

<最初の5つの整数>

<最後の5つの整数>

このコードでループを用いた標準入力の入出力を行います。
ループを100回まわして、その中で標準入力で変数tempに代入して、tempを出力しています。

整数を標準入力で取り込んでいるので、intの中にinputを入れています。

#標準入力で100行取り込んで出力する
for i in range(100):
    temp=int(input())
    print(temp)

このコードの実行(出力)結果です。

<前半5つの整数>

<後半5つの整数>

Pythonは以上です。

次は、GASで解いて行きます。


今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

問題集の入力例1をコピーしてからショートカットキーで、緑のセルA2(2,1)から始まる所に [ Ctrl ] + [ Shift ] + [ V ]と貼り付けると色が変わらないで貼り付けられます。

<数値前半5つ>

1行目で固定してスクロールの対策をしております。
行の「1」の所を選択すると行全体が選択されるので、その状態で 表示 → 固定 → 行1まで と行の表示の固定で固定してあるので、スクロールしてもタイトルの入力、出力は表示されます。

<数値後半5つ>

緑色の列の所に入力した整数、セルA2(2,1)から始まる100行分の整数を取得して、それを黄色いセルC2 (2,3)から始まる100行分に出力します。

その際この黄色いセルに、二次元配列として取得した整数が格納された配列を出力します。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:SpreadSheetAppから階層を辿って現在のシートにアクセスする

2:緑色のセルB1(2,1)から始まる列の整数を取得して、100個の整数を二次元配列numに格納

3:スプレッドシートの出力前に100個の整数が格納された二次元配列numを取得できたことをログ出力で確認する

4:スプレッドシートの黄色い列C2(2,3)の所から100行分に二次元配列numを出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

このコードを関数「standardInput4」の中に書いて行きます。

Standard Inputで標準入力の意味です。

function standardInput4() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss = SpreadsheetApp.getActiveSheet();

}

手順2:緑色のセルA2(2,1)から始まる列の整数を取得して100個の整数を二次元配列numに格納する

num=ss.getRange(2,1,100).getValues();

function standardInput4() {

  const ss = SpreadsheetApp.getActiveSheet();

  //緑色のセルA2(2,1)から始まるの列の整数100個を取得して整数を二次元配列numに格納
  const num = ss.getRange(2,1,100).getValues();

}

ss.getRange(2,1,100)ですが、(2,1)がセルA2です。
そこから100行分ですので、その後のカンマの後の数字は100行の100です。
1列分の1は省略可能ですが、ss.getRange(2,1,100,1)と書いても動作します。

手順3:スプレッドシートの出力前に100個の整数が格納された二次元配列numを取得できたことをログ出力で確認する

console.log(num);

コードと実行結果です。ログの画像は数値の最初の方の一部です。
(ログでは配列が長くて100個確認が出来なかった為。)

function standardInput4() {

  const ss = SpreadsheetApp.getActiveSheet();
  const num = ss.getRange(2,1,100,).getValues();

  //スプレッドシートの出力前に100個の整数が格納された二次元配列numを取得できたことをログ出力で確認する
  console.log(num);

}

手順4:スプレッドシートの黄色い列の所に二次元配列numを出力する

ss.getRange(2,3,100).setValues(num);

コードと実行後のスプレッドシートです。

function standardInput4() {

  const ss = SpreadsheetApp.getActiveSheet();
  const num = ss.getRange(2,1,100,).getValues();
  console.log(num);

  //スプレッドシートの黄色い列C2(2,3)から100行分の所に二次元配列numを出力する
  ss.getRange(2,3,100).setValues(num);

}

<出力した数値の前半5つ>

<出力した数値の後半5つ>

GASは以上になります。


お疲れ様でした。ブレイクタイムPhotoは、

遊歩道の桜です。
歩きながら、青空と桜に元気を貰いました。

勉強で疲れた時に見て下さると嬉しいです。

←前の問題へ          次の問題へ→

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力4」へ戻る
paizaレベルアップ問題集_ PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

paiza レベルアップ問題集 標準入力その4「STEP: 3 5 行の整数の入力」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、Pythonで標準入力を使って、ループを用いて5つの整数を取得する方法が学べます。

GASではスプレッドシートで値を取得して出力しています。

このコーナーでは、プログラミング学習コンテンツpaizaラーニングのレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、ご安心なさって下さい。)



5 行の整数の入力 (paizaランク D 相当)

問題:整数 a_1, a_2, a_3, a_4, a_5 が 5 行で与えられるので a_1, a_2, a_3, a_4, a_5 を 5 行で出力してください。

ではまず、Pythonで解いてみます。


手順として、

1:ループを使って標準入力で整数を取得し出力する

の1ステップで行います。

今回は下記の入出力の「例2」を用います。

入力例2
1111
3333
5555
7777
9999

出力例2
1111
3333
5555
7777
9999

まず、準備として、paiza.ioにこのように入力します。
(入力例2をコピペしたのみ)

下記のコードでは、変数tempに標準入力を用いて数値を入れてからprint文で出力する動作をループで5回繰り返しています。

その際、数値ですのでintの中にinputを使っています。

#ループを使って標準入力で整数を取得し出力する
for i in range(5):
    temp=int(input())
    print(temp)

コードと実行結果です。

Pythonは以上です。


今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

緑色のセルA2(2,1)から始まる5行1列に入力した整数を取得して、それを黄色いセルC2(2,3)から始まる5行1列に出力します。

その際、この黄色いセルの所に、二次元配列として取得した整数が格納された配列を出力します。

行数と列数が必ず一致する必要があります。
そうしないとエラーが出ますので、これは体感的に習得するのが早いと思います。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:SpreadSheetAppから階層を辿って現在のシートにアクセスする

2:緑色のセルA2(2,1)から5行1列分の整数を取得して、5つの整数を二次元配列numに格納

3:スプレッドシートの出力前に5つの整数が格納された二次元配列numを取得できたことをログ出力で確認する

4:スプレッドシートの黄色いセルC2(2,3)から始まる5行1列分に二次元配列numを出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

このコードを関数「standardInput3」の中に書いていきます。

Standard Inputで標準入力の意味です。

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

function standardInput2() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();
  
}

手順2:緑色のセルA2(2,1)から始まる5つの整数を取得して、これらの整数を二次元配列numに格納

num=ss.getRange(2,1,5).getValues();

セルA2は(2,1)で、その後の「5」は5行分です。

1列分の列数も加えて(2,1,5,1)と指定しても数値を取得出来ますが、1列の場合は省略が可能です。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルA2(2,1)から始まる5つの整数を取得して二次元配列numに格納
  const num=ss.getRange(2,1,5).getValues();
  
}

手順3:スプレッドシートの出力前に5つの整数が格納された二次元配列numを取得できたことをログ出力で確認する

console.log(num);

下記のコードと、その実行結果のログ出力です。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,5).getValues();

  //スプレッドシートの出力前にnumに二次元配列として5つの整数を取得して格納出来たことをログ出力で確認
  console.log(num);
  
}

手順4:スプレッドシートの黄色いセルに二次元配列numを出力する

ss.getRange(2,3,5).setValues(num);

下記のコードと実行後のスプレッドシートです。

C2から出力するので、(2,3)になり、5行分なので(2,3,5)です。
こちらも列の1列分は省略可能です。
(2,3,5,1)と書いても無事に実行出来ます。

function standardInput3() {

  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,5).getValues();
  console.log(num);

  //スプレッドシートの黄色いセルC2(2,3)から始まる5行分の二次元配列numを出力する
  ss.getRange(2,3,5).setValues(num);
  
}

GASは以上です。


お疲れ様でした。ブレイクタイムPhotoは、

石神井公園の桜です。

←前の問題へ          次の問題へ→

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力4」へ戻る
paizaレベルアップ問題集_ PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集】標準入力その1 「FINAL問題 【行入力】1,000 行の入力」をPythonとGASで解いたコード紹介

この記事を読むことで、ループを使って1000行分もの文字列をPythonの標準入力で取得・出力する方法と、GASではスプレッドシートを用いて1000行の配列をループで作成して、それを別の列に出力する方法を掲載しております。

このコーナーでは、プログラミング学習コンテンツのpaizaラーニングのレベルアップ問題集の同じ問題をPythonとGAS(Google Apps Script)で解いたコードを掲載しております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、ご安心なさって下さい。)


【行入力】1,000 行の入力 (paizaランク D 相当)

問題:
s_1, s_2, s_3, … s_999, s_1000 の 1,000 個の文字列が与えられます。
文字列を与えられた順番通りに出力してください。

この記事では、下記の入力例1の場合を例にして、文字列の出力を行います。

入力例1
paiza0
paiza1
paiza2
paiza3
paiza4
paiza5
paiza6
paiza7
paiza8
paiza9

・
・
・

(以下略)

・
・
・

paiza990
paiza991
paiza992
paiza993
paiza994
paiza995
paiza996
paiza997
paiza998
paiza999

出力例1

paiza0
paiza1
paiza2
paiza3
paiza4
paiza5
paiza6
paiza7
paiza8
paiza9

・
・
・

(以下略)

・
・
・

paiza990
paiza991
paiza992
paiza993
paiza994
paiza995
paiza996
paiza997
paiza998
paiza999

ではまず、Pythonで解いてみます。


下準備として、paiza.ioにこの様に入力します。
(入力例1をそのままioにコピーしたのみで、画像はその一部です。)

(以下略・・・)

手順として、

1:問題文から1000行と分かっているので、ループを1000回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する

で、行います。

Pythonのコードはこちらになります。
また、コメントが複数行に渡る場合は「’」のシングルクォーテーション3つ「”’」か「”」のダブルクォーテーション3つの「”””」でコメントの開始位置と終了位置に掲載します。

'''
問題文から1000行と分かっているのでループを1000回まわし、
ループの中で標準入力で取得した文字列を変数tempに格納して出力する
'''

for i in range(1000):
    temp=input()
    print(temp)

この手順で作成したプログラムを実行した出力結果の一部です。

(以下略・・・)


次は、同じ問題をGASで解いてみます。
まず、この様なスプレッドシートを用意しました。

今回はA列の入力欄にpaiza0,paiza1,paiza2・・・paiza997,paiza998,paiza999と1000行ものデータを用意しなければなりません。さすがに手打ちではきついので、まず最初にこのようなコードを作成致しました。

文字列作成準備の手順です。

1:SpreadSheetAppからアクティブシートにアクセスする

2:A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言

3:ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく

4:スプレッドシートのA列に格納する前にログで確認する

5:スプレッドシートのA列の入力の下に配列columnAの値を格納する

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

関数「loop1000」の中にコードを書いていきます。

function loop1000() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

}

手順2:A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言

let columnA=[];

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();

  //A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言
  let columnA=[];

}

手順3:ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく

ループ内の変数iを0から999まで変化させて、文字列「paiza」に「+i」でくっつけて、paiza0〜paiza999をループを利用して生成しています。

また、スプレッドシートは二次元配列の為、「 [‘paiza’ + i ] 」としています。

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  //ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく
  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

}

手順4:スプレッドシートのA列に格納する前にログで確認する

console.log(columnA);

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

  //A列に出力前にログで二次元配列が生成できたことを確認
  console.log(columnA);

}

実行した所、ログでは1000行は多過ぎて全ては表示しきれませんでしたが、二次元配列の形になっていることは確認出来ました。

(・・・ 途中省略 ・・・)

手順5:スプレッドシートのA列の入力の下に配列columnAの値を格納する

ss.getRange(2,1,columnA.length).setValues(columnA);

paiza0〜paiza999まで出力するセルはA2を起点としているので、2行目1列で(2,1)としています。

その後にこの配列の長さである、columnA.lengthで1000行分を確保しています。

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

  console.log(columnA);

  //スプレッドシートのA列の入力の下に配列columnAの値を格納する
  ss.getRange(2,1,columnA.length).setValues(columnA);

}

このコードの実行結果です。

(・・・ 途中省略 ・・・)

スプレッドシートはpaiza0からpaiza999までの1000行表示出来ました。
最初の行が見えるように行固定致しました。


準備が整ったところで、A列の文字入力部分を二次元配列として取得して、C列の黄色いセルにそのまままの順番で文字列を出力します。プログラミングの手順は下記のようになります。

6:SpreadSheetAppからアクティブシートにアクセスする

7:A列の値を定数numに格納する

8:numをC列に出力する

手順6: SpreadSheetAppから階層を辿って現在のシートにアクセスする

これを関数「standardInput5」の中に書いていきます。
Standard Inputで、標準入力の意味です。

function standardInput5() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

}

手順7:A列の値を定数numに格納する

const num=ss.getRange(2,1,1000).getValues();

function standardInput5() {

  const ss=SpreadsheetApp.getActiveSheet();
  
  //A列の値を定数numに格納する
  const num=ss.getRange(2,1,1000).getValues();

}

手順8:numをC列に出力する

ss.getRange(2,3,1000).setValues(num);

function standardInput5() {

  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,1000).getValues();

  //numをC列に出力する
  ss.getRange(2,3,1000).setValues(num);

}

実行結果です。

(・・・中略・・・)

ここまでで、「標準入力その1」は終了致しました。


お疲れ様でした。ブレイクタイムPhotoは、

遊歩道で撮影した桜です。

←前の問題へ    標準入力その2へ→      

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その1」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

息抜きに、写真で癒し(=^x^=)

このコーナーでは、癒しをテーマに、「夜景」や「自然」などの写真を中心に
掲載しています。

ごゆっくりと、くつろいで行って下さい(=^x^=)

フォトストック写真ACさんに投稿をしております。

Threads始めました!!
フォロー宜しくお願いします(=^x^=)


■ 乗り物 ■

多摩モノレールと中央本線


■ 今は無き、思い出の場所■

お台場パレットタウンメモリーズ



■ 桜 、お花見■

埼玉の植民地、「池袋」西口公園の桜

東京下町、足立区の桜

石神井公園 アニメ聖地巡礼平成最後の花見

目白庭園の夜桜


■ 新緑 ■

水元公園でサイクリング。ゴールデンウィークの爽やかな風・グリーンエクササイズ。



■ 梅雨時 ■

代々木公園、雨粒はじけるアジサイとバラ



■ 夏・納涼 ■

いたばし花火大会(2023)


いたばし花火大会(2019)


海と空、波打ち際、地球の息吹が味わえる御宿(房総半島)

江ノ電の旅 鎌倉高校前駅のロケ地にもなっている海

湘南の海!片瀬海岸と江ノ島岩場

立川市のひまわり(国営昭和記念公園 西立川口 サンフィニティ)

等々力渓谷 世田谷区の自然 とても東京23区内とは思えない自然と涼しさ



■ ハロウィン ■

六本木ヒルズでトリックオアトリート!?


東池袋、サンシャイン60展望台のハロウィン



■ 紅葉 ■

目白庭園


■ Xmasイルミネーション ■

お台場レインボー冬の花火大会2022

東京駅丸の内シャンパンゴールドに輝く街路樹

よみうりランドのジュエルミネーション

お台場

東京メガイルミ


恵比寿ガーデンプレイス


横浜みなとみらい

有楽町MULLION(マリオン)〜銀座のクリスマスイルミネーション

恋するイタリア 東京ドームシティ2016



■ 地元、東京下町 ■

スカイツリー3地点観測


ようこそ!スカイツリー、浅草へ!!

谷根千。日暮里から谷中銀座の昭和レトロな散策。

すみだ水族館のふわきゅんクラゲまつり


■ 工場萌え ■

2019年8月川崎工場地帯

2023年1月川崎千鳥橋方面


■ その他ライトアップ ■

羽田空港第一ターミナルで飛行機と空港夜景を撮影

六本木ヒルズスカイデッキから望む東京タワー

都庁と西新宿の夜景



■ その他 ■

サンシャイン水族館の空飛ぶペンギン

浮間公園の風車(埼京線浮間舟渡 東京都板橋区・北区の旅)

若者の街、表参道ヒルズから原宿までの散策

写ルンです復刻版 瀬戸内しまなみ海道 今治・大島・伯方島の旅

LEGOブロックと光のマジック

落書き風お笑い系芸能人の似顔絵


TikTok始めました。
始めた理由は、TikTokの仕組みに興味を持ったからです。若い方限定のSNSなので、自分には無理だと思っていたのですが、他のSNSが時間に影響を受ける仕組みに対してTikTokは時間に影響を受けないループ型なので、良い動画であれば過去の動画も見て頂けるという仕組みに興味を持って始めました。TikTokは、Twitterが使える方なら多分すぐ慣れると思いますし、動画編集に至っては、YouTubeの100倍以上楽です。

インスタ再開しました。

写真の投稿を始めました。
(写真AC)のプロフィールページです。

写真のアンケートを実施しております。
宜しかったらご回答頂けますと、大変励みになります(=^x^=)

写真素材素材【写真AC】

フォトストック写真ACさんに投稿をしております。

メインメニューに戻る
自己紹介


初めてのPhotoshop


【 COUNTIF関数】Excelでサザエさんキャラの25歳以上の人数を数える

この記事では、国民的アニメ「サザエさん」のキャラクターの例を通して、

・COUNTIF関数で25歳以上のキャラクターの人数を数える

・日付をTODAY関数で表示する

・日付をショートカットキーで表示する

・3/14(金)などのユーザー定義の使い方


・3「人」などの単位をユーザー定義で付ける方法

についての概要を掴めます。

キャラクターの年齢は、サザエさんの公式サイト参考にして、下記の様な簡単な表を作成しました。

年齢不明のキャラクターの「磯野フネ」さんとペットの「タマ」は、テキトーな年齢にして、下記のような表を作りました。


黄色いセルのあるF1に、

=COUNTIF(年齢のセル範囲 , “>=25”)

という、数式を入力します。
25歳以上は、 ” ダブルクォーテーション ” をつけて、

“>=25”

と入力します。
セルF1に、具体的には下記の式を入力します。

=COUNTIF(C2:C9,”>=25″)

この ” ダブルクォーテーション ” を忘れるとエラーになってしまいますので、お気を付けて下さいませ。

この場合ですと、
・波平さん
・フネさん
・マスオさん

の「3」人が、該当しました。


さて、今度はこの表のオレンジのセルB11に、今日の日付を入れてみます。

日付をファイルを開く都度の更新にする場合は、

=TODAY()

とTODAY関数を使います。

今日は、2025年3月14日のホワイトデーですが、明日このファイルを開くと、3月15日に更新されます。

更新せずに、ずっと同じ3月14日(金)日付にしたい場合はショートカットキーで

[ctrl]+[;(セミコロン)]

を押します。

Macをお使いの方、[command]でこのキーを押すと時刻になってしまうので、[control]で押して下さい。

この日付の形式を3/14(金)の様にしたい場合は、

[Ctrl]+[1]

を押して、ユーザー定義(左のリストの一番下)を選択して、

m/d(aaa)

と入力してOKを押します。

下の図はMacですが、Windowsでも多分大体同じだと思います。
異なっている点がもしもございましたら、お手数ですが検索して調べて頂けますと有り難いです。

OKを押すと、この様に曜日も表示されました。


次に、一旦F1の黄色いセルに戻って、25歳以上の人数に「人」と単位を付けます。

同じように[Ctrl]+[1]を押して、左側のユーザー定義から

0人

と入力すると、

と、人数の単位が付きました。

あれ、カツオくんが年下になっているどころか、サザエさんまでも年下になっている!?

今回、人数が少ないキャラクターの例の年齢でCOUNTIF関数を使いましたが、もっと大人数の方で試したい場合は、テストデータージェネレーターが便利です。
Excelやスプレッドシートの勉強に役立ちます。

お疲れ様でした。ブレイクタイムPhotoは、

写真は、恵比寿ガーデンプレイスのクリスマスイルミネーションです。


ご精読誠にありがとうございました。

「できるYouTuber式 Excel現場の教科書(長内孝平氏)」

単行本(ソフトカバー)
Kindle版


「なんの才能もない発達障害者の声: 〜 届かない声を届けたい 〜 (障害者雇用向け)」

私、猫★シエスタの著作です。殆どが「発達障害者として働くことや障害とSNSについて」ですが、障害者雇用の事務作業で特に使用頻度の高いキーに絞ったExcelなどのショートカットキーの紹介と、演習問題も掲載しております。
Kindle版

「取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ」に戻る

初めてのGoogleスプレッドシートへ



写真クリエイターとしての活動
自己紹介