Google スプレッドシートのフィルタについて

このQ&Aのポイント
  • Google スプレッドシートのフィルタについて説明します。フィルタを使用し、非表示の状態にしたセルに対して[setValue(s)]を行いたい場合、日付を入力した場合にフィルタを解除すると入力ができない問題が発生します。今回はこの問題に対する解決方法について考えていきます。
  • 実際のスプレッドシートの操作例として、No.が1の行のみを表示するようにフィルタをかけた場合を考えます。そして、IDが7の行のC列に日付、D列に[TEST]を入力したいとします。しかし、フィルタを解除するとC列には日付が入力されず、D列には[TEST]が入力されます。この問題を解決するためのコード例も紹介します。
  • フィルタを使った操作時に、条件に合う行の特定のセルに値を入力したい場合、フィルタを解除した後に行う必要があります。フィルタを解除すると、非表示のセルには値を入力することができないためです。この問題を解決する方法として、「setValue」関数を使用して特定の条件に対して値を入力するコードを実行します。これにより、フィルタを解除しても値が入力されるようになります。
回答を見る
  • ベストアンサー

Google スプレッドシートのフィルタについて

フィルタを使用し、非表示の状態にしたセルに対して[setValue(s)]を行いたいです。 しかし、日付を入力した場合、フィルタを解除すると入力ができていません。 setValue自体はログを見るとエラーは発生せず成功しています。 どうすればよろしいのでしょうか。 以下イメージです。 --------------------------------- スプレッドシート A  B  C  D No. ID 1  1 1  2 1  3 2  4 2  5 2  6 3  7 3  8 3  9 ---------------------------------- No.が1を表示するようにフィルタをかける A  B  C  D No. ID 1  1 1  2 1  3 ---------------------------------- 実行するコード IDが7の行のC列に日付、D列に[TEST]を入力 function myFunction() { var sh = SpreadsheetApp.getActive().getSheetByName( sheetname ); var id = sh.getRange("B:B").getValues(); for(var i=0; i<id.length; i++){ if(id[i] == 7){ sh.getRange("C" + (i + 1)).setValue(new Date()); sh.getRange("D" + (i + 1)).setValue("TEST"); } } } ----------------------------------- フィルタを解除 A  B  C  D No. ID 1  1 1  2 1  3 2  4 2  5 2  6 3  7    TEST 3  8 3  9

質問者が選んだベストアンサー

  • ベストアンサー
noname#247307
noname#247307
回答No.1

単純に、new DateでオブジェクトをsetValueしているからでは? 日時のテキストを生成してsetValueしたら表示されませんか。 var today = new Date(); var dd = today.getDate(); var mm = today.getMonth()+1; var yyyy = today.getFullYear(); sh.getRange("C" + (i + 1)).setValue(yyyy + '-' + mm + '-' + dd;);

okwave-s
質問者

お礼

shylockさん 回答ありがとうございます。 確かに文字列に変換すると表示されました。 しかし、なぜ日付だと表示されないのでしょう…。

関連するQ&A

  • スプレッドシートの日付チェック

    こんにちは。 スプレッドシートのスクリプトについてお聞きします。 スプレッドシートの各行にチェックボックスと日付入力欄があります。 1番上にボタンを配置し、クリックしたらチェックしてある行の 日付を別のシートに転送したいのですが、その場合セルに入力してある内容が 有効な日付形式であるかチェックしたいのです。 入力は2018/08/30のように入力します。 for (var i=1; i<=maxgyo;i++) { var value = sheet1.getRange(i,7).getValue(); if(value==true ) { 有効な日付かチェック } この中でどのようにチェックすればよろしいでしょうか? わかる方おられましたら、宜しくお願いします。

  • スプレッドシートのVLOOKUPについて

    スプレッドシートで1つ教えて下さい。 A列のプルダウンで選択すると別シートの品番単価表を参照し B列からD列に単価が表示されるようにしました。 同様にE列プルダウンで選択すると別シートの部品単価表を参照し F列からH列に単価が表示されるようにしました。 単価の値を変更後、再度プルダウンから値を選択すると 再度参照するように前回いろいろと教えて頂き下記のようなコードを書きました。 function WriteVlookup() { var sheet = SpreadsheetApp.getActive().getSheetByName('入力シート'); var myCell = sheet.getActiveCell(); var myRow=myCell.getRow(); var myColumn=myCell.getColumn(); if(myColumn==1 && myRow>=2 ){ for(var i = 2; i <= 4; i++) { strformula ='=VLOOKUP($A' + myRow + ',\'単価シート\'!$A$2:$D$4,' + i + ',False)'; sheet.getRange(myRow, i).setFormula(strformula); strformula2 ='=VLOOKUP($G' + myRow + ',\'単価シート\'!$A$6:$D$8,' + i + ',False)'; sheet.getRange(myRow, i + 6).setFormula(strformula2); } } }; しかしE列に値がなくてもセットしてしまい #N/Aが表示されてしまいます。 例えば 単価シート(2から4行目は品番単価、6から8行目は部品単価) 品番  単価1 単価2 単価3 あ   50 60 70 い   80 90 100  う 110 120 130 QQ 10 20 30 WW 40 50 60 EE 70 80 90 入力シート A   B C D E F G H あ  50 60 70 #N/A #N/A #N/A い 80 90 100 QQ 40 50 60 上記の式をどのように修正すれば#N/Aが 表示されなくなりますか? 分かる方おられましたら 教えて頂けないでしょうか。 宜しくお願いします。

  • Googleスプレッドシートフィルター結果の編集

    Googleスプレッドシートにおいて、 Aというシートにフィルターをかけて、Bのシートに結果を出力するように関数を入れました。 =FILTER(A!A6:F300,A!D6:D300="△") という関数をBシートに入力し、"△"を含む行の結果をAシートから引っ張っています。 このBシートに表示されたフィルター結果のセルの文字を編集しようとすると、 「エラー:配列結果は**(編集元のセル番号)のデータを上書きするため、展開されませんでした。」 と出て、上書きできません。 元データを変更させないために、こういったエラーになっているとは思うのですが、 このフィルター結果内で編集を行い、元データにも同期される、ということは可能なのでしょうか。 それとも、そもそもフィルターというのは閲覧するもので、編集するものではないのでしょうか。 ・Googleスプレッドシートのフィルタ結果内で文字の編集は可能なのか ・できないとしたら、普通はどんな代替案を使うのでしょうか すみませんがご存じの方があれば、教えていただけないでしょうか。

  • 【エクセル(Googleスプレッドシート)】

    エクセル初心者になります。 つたない質問になってしまい申し訳ないですが 下記に関してご指導の程よろしくお願い致します。 下記の例の様にエクセル(Googleスプレッドシート)で 日付、日付以外、空白がある表に対して以下の結果を求めるにはどのような関数を使用すれば宜しいでしょうか? ●結果A A列、B列どちらかに日付や文字が打たれて、C列が空白のもの ●結果B A列、B列で両方に日付や文字が打たれて、C列が空白のもの ※日付は仕様上10/2といった通常の日付表記と、日付+アンダーバー数字といった打ち方をします。 ※空白は分かりやすく空と表記しています。 ※文字列は仮に"sumi"と"-"を打っていますが、様々なものがあります。 例 ================================ A列    B列    C列 10/2    10/3_2    空 10/1_2   10/1     10/2 空     10/2    空 空     空     空 空     10/5    10/5 10/1    空     空 sumi    空     10/2 -      10/4    10/4 ================================== ●結果A(A列、B列どちらかに日付や文字が打たれて、C列が空白のもの) 3 ●結果B(A列、B列で両方に日付や文字が打たれて、C列が空白のもの) 1 恐れ入りますが、何卒よろしくお願い致します。

  • ActionScript3.0の記述が長い・・・

    ActionScript3.0の記述が長い・・・ お世話になっています。 最近Flashを始めました初心者です。 現在FlashCS5である値を計算する計算機のようなFlashを制作しています。 ・・・と、やりたいことは実現できましたので、 このことは質問と直接関係ないのですが。。 質問は、スクリプトのまとめ方(?)についてです。 というのも、初心者だけに知っていることしかできないので、 絶対に一緒に出来るだろうと言うような、同じような記述がたくさん出てきます。 それを配列や演算子を使用し、ソースをすっきりさせたいのです。 無理なものもあるかもしれませんが、 以下のまとめ方をお教えください。 -- (1) -- a.restrict = "0-9"; b.restrict = "0-9"; c.restrict = "0-9"; d.restrict = "0-9"; e.restrict = "0-9"; -- (2) -- var A:Number = Number(a.text); var B:Number = Number(b.text); var C:Number = Number(c.text); var D:Number = Number(d.text); var E:Number = Number(e.text); -- (3) -- var A = B - 100 if(A < 0){ A = 0; }; var C = A / B if(C < 0){ C = 0; }; var D = C * B if(D < 0){ D = 0; } if(D > 0){ D = Math.round(D); }; -- (3) -- F.text = String(A); G.text = String(B); H.text = String(C); I.text = String(D); J.text = String(E); 変数は適当に当てはめています。 お分かりになる方がいらっしゃいましたらご教授ください。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • エクセルのフィルターオプションで

    エクセル2000です。 A10:D10000位の大きな表があります。1行目(10行)はタイトル行です。 そのうちB列の商品名からA、B,Cの3つの商品、D列の日付から2006/12/01~2006/12/31のものをフィルターオプションで抽出したいのです。 抽出条件を 1行目はタイトル行 B2にA B3にB B4にC とした場合、D2~D4にはどう記述すればいいのでしょうか?

  • EXCEL2000 オートフィルタで。。

    お世話になります EXCEL2000 です。 やりたいことは、例えば A列に(もちろん縦に)A,B,C,D,E,F,Gとデータが並んでいたとして、その中で、B,C,Dのデータだけを抽出したい場合はどうしたらいいのでしょう?? オートフィルタでいいでしょうか? データ→フィルタ→オートフィルタで、▼をクリックし、 オプション画面がありますが、[or]だと、2つのデータしか抽出できないようになっていて・・・(涙 しかたがないので、白い入力欄に、,(カンマ)で区切って B,C,Dというふうに入れてみましたが うまくいきませんでした。。。 どうすればいいでしょう?

  • EXCELのオートフィルタについて教えてください。

    下記のようにデータが入力されています。   A   B   C 1 あ 2 い 3 う 4 え 5 お C列のC1に「=A1」C2に「=A2」と入力してオートフィルタを使って、「C3」以下に入力するとオートフィルタが使用できます。 しかし、以下のようにデータが入力されている場合はオートフィルタが使用できないのですが・・・   A   B   C 1 あ 2  3 い 4  5 う 6 7 え 8 9 お C列のC1に「=A1」C2に「=A3」と入力してオートフィルタを使って、「C3」以下に入力するとオートフィルタが使用できません。 簡単なことなのかもしれませんが、今一理解に苦しんでいます。 宜しくお願いいたします。

  • googleスプレッドシート内の集計

    初めて投稿させていただきます。 社内運用で現在困っているところがございます。 社内メンバーのスケジュール表を使用しているのですが、    11/1   2   3   4   5   6   7   8   9   10   11・・・・  Aさん      メーカーA      メーカーB              12          15  Bさん   メーカーC      メーカーB           7           11  Cさん              メーカーA      メーカーC                      7           11 というように横に日付が入っており、その下にその日担当するメーカー名等が入っています。 そのメーカー名の下に、その日の実績を数値で入力してあるのですが、この時に別シートで各メーカーごとの実績集計をしたいのです。         実績合計 メーカーA   35 メーカーB   52 メーカーC   11 このような表示にできたら理想的なのですが、このような集計はどうしたら出来るでしょうか? 「表の中にあるメーカーAの2つ下のセルの値を合計する」というような事が可能なのでしょうか? お力添え頂けたら幸いでございます。宜しくお願い致します。

  • エクセルのオートフィルタの条件にセルの値を入れる。

    エクセルのオートフィルタを使用した際、条件の中に【A月B日以上】【C月D日以下】としたいのですが、その【A月B日】【C月D日】を、それぞれあるセルに入力した値にしたいのですが、どのようにやればよいですか? 当然、毎回日付は変更します。 マクロでできる方法を教えて下さい。 よろしく御願いします。

専門家に質問してみよう