データのない所の結果を空白にする方法は?

このQ&Aのポイント
  • グーグルスプレッドシートを使用してデータのない所の結果を空白にする方法について教えてください。
  • ABCシートとXYZシートがあり、XYZシートの計算結果の一部に意図しない結果が出ています。データのない所を空白にしたいのですが、どのようにすれば良いでしょうか。
  • ファイルを共有していますが、データのないところの計算結果が問題となっています。解決策を教えてください。
回答を見る
  • ベストアンサー

データのない所の結果を空白にしたいです

グーグルスプレッドシートを使用しています。 エクセルの関数と同じだと思いまして、こちらで質問させていただきましたことご了承くださいませ。 ABCシートとXYZシートがあります。 XYZシートにはABCシートを参照して関数を書いています。 意図していない結果が出るのは「XYZシートの計算結果」の16行目~21行目です。 ABCシートの中のデータの無い所の計算結果で問題が発生しています。 データのないところは空白としたいのですがどのようにすれば良いかアドバイス頂けないでしょうか。 以下、ファイルを共有していますがイメージも本質問に添付させていただきました。 https://docs.google.com/spreadsheets/d/1wOPzf0FNeUgPqxtZzouf23E1SlcNBO0-cDkkpidn3d0/edit?usp=sharing ●ABCシートの内容です。 A列1行目,B列1行目 1行目です,B列2行目です 2行目です,B列3行目です 3行目です,B列4行目です 4行目です,B列5行目です 5行目です,B列6行目です 6行目です,B列7行目です 7行目です,B列8行目です 8行目です,B列9行目です 9行目です,B列10行目です 10行目です,B列11行目です 11行目です,B列12行目です 12行目です,B列13行目です 13行目です,B列14行目です 14行目です,B列15行目です ●XYZシートの計算結果です。 A列1行目,B列1行目 13行目です,B列14行目です 14行目です,B列15行目です 11行目です,B列12行目です 12行目です,B列13行目です 9行目です,B列10行目です 10行目です,B列11行目です 7行目です,B列8行目です 8行目です,B列9行目です 5行目です,B列6行目です 6行目です,B列7行目です 3行目です,B列4行目です 4行目です,B列5行目です 1行目です,B列2行目です 2行目です,B列3行目です #REF!,#REF! A列1行目,B列1行目 #REF!,#REF! #REF!,#REF! #REF!,#REF! #REF!,#REF! ●XYZシートの関数です A2には =OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(A2),2)*2,COLUMN()-1) B2には =OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(B2),2)*2,COLUMN()-1) と記載しています。以降 A3には =OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(A3),2)*2,COLUMN()-1) B3には =OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(B3),2)*2,COLUMN()-1) 以降、関数の中の (A3)(B3)の所が (A4)(B4) (A5)(B5) と変化しています。 データのないところは空白としたい場合にどのように関数を書けば良いのかアドバイス頂けないでしょうか? 恐れ入りますがよろしくお願いいたします。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.3

まず、期待していることは次の2つではないでしょうか。 その1 XYZシートの#REF!の表示を空欄にしたい その2 XYZシートの17行目に ABCシートの1行目(タイトル)が表示されているので これを空欄にしたい。 以下、これを前提に説明します。 前者は他の方のコメントで解決できますが 後者はエラーではないので、解決できません。 この2つが期待値にならないのは、 XYZシート、A2セルをもとに説明すれば、 =COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(A2),2)*2 この部分が0以下になることを考慮していないからです。 また、 =OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(A2),2)*2,COLUMN()-1) は、 =OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(),2)*2,COLUMN()-1) と書いても結果は同じです。 私なら A2=if(COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(),2)*2>0,OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(),2)*2,COLUMN()-1),"") B2=if(COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(),2)*2>0,OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(),2)*2,COLUMN()-1),"") を埋め、必要数、下方向に複写します。

megumi199
質問者

お礼

HohoPapaさま こんなに短時間に完ぺきに私の問題を理解していただき解決に導いていただきまして本当にありがとうございました! ずっとこの問題で悩んでいたので、できた時には少し涙が出てしまいました。 本当に本当にありがとうございました! また、今回見ず知らずの私のために丁寧に回答くださった皆様へ本当にありがとうございました!

その他の回答 (2)

  • Green_Tree
  • ベストアンサー率80% (1108/1379)
回答No.2

IFERRORでいけると思いますが。 例えば、A16は =OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(A16),2)*2,COLUMN()-1) ですが、これを =IFERROR(OFFSET(ABC!$A$1,COUNTA(ABC!$A:$A)-ROW()+MOD(ROW(A16),2)*2,COLUMN()-1),"") に変えてみてください。(上記数式をそのままコピーして貼付けで) 非表示になりませんか?

この投稿のマルチメディアは削除されているためご覧いただけません。
megumi199
質問者

お礼

Green_Treeさま ご連絡頂きまして、本当にありがとうございます。 説明が足らず大変申し訳ありません。 shiren2さまからのご連絡で「#REF!」という問題は出なくなっていたのですが、 A17とB17になぜかABCシートの1行目が出てきてしまうのです。 仮にABCシートに23行目までデータが入っていれば 「#REF!」と「ABCシートの1行目がどこかに出てきてしまう」問題は発生しないのですが  ※「#REF!」はshiren2さまからのご連絡で解決済みです。申し訳ありません! 23行目までデータが入っていない場合に 「ABCシートの1行目がどこかに出てきてしまう」問題が発生します。 この一行目の部分はデータではなく、項目を記載しているだけの所なので読み込んでほしくないのです。 XYZシートで書かれている関数でABCシートの1行目だけは、処理から無視してほしいのです 元々、ABCシートの23行目までにデータが書かれている前提で関数が書かれていたようで ABCシートの23行目までにデータが書かれていない場合に、 「ABCシートの1行目がどこかに出てきてしまう」 という不具合が出てしまいます。 説明が足らず本当に申し訳ありませんでした。 また、もし上記の問題を解決できる方法が分かりますようでしたらばなにとぞご指導、アドバイス頂きたく何卒宜しくお願いいたします。 めぐみ

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.1

IFERRORでどうですかね。 IFERROR(OFFSET(hogehoge), "") みたいな感じです。

megumi199
質問者

お礼

ご連絡ありがとうございます。 元々の式の問題のようで、IFERROR構文にしてもまったく同じ問題が発生します。

関連するQ&A

  • この式はなぜエラー #VALUE! になるのだろう?

    この式はなぜエラー #VALUE! になるのだろう?   A  B  C  D 1    92 95 96 2 3  60 67 99 4  99 13 74 5  92 58 96 6  93 59 10 7  81 51 10 8  81 95 98 9  88 45  6 範囲 A3:C9 に上図のデータがあると仮定します。そして、 1行目の各セルに次の値を返したい、というのが問題です。 B1: セル A3、A5、A7 の最大値 C1: セル B4、B6、B8 の最大値 D1: セル C5、C7、C9 の最大値 1行目の各セルに次の配列数式を入力すれば希望通りの値が得られます。 B1: {=MAX(OFFSET($A3,0,0,5,)*MOD(ROW(A1:A5),2))} C1: {=MAX(OFFSET($A3,1,1,5,)*MOD(ROW(B1:B5),2))} D1: {=MAX(OFFSET($A3,2,2,5,)*MOD(ROW(C1:C5),2))} OFFSET関数の引数 0、1、あるいは 2 のところは COLUMN関数で置き換えられるはずと考えて B1: {=MAX(OFFSET($A3,COLUMN(A1)-1,COLUMN(A1)-1,5,)*MOD(ROW(A1:A5),2))} C1: {=MAX(OFFSET($A3,COLUMN(B1)-1,COLUMN(B1)-1,5,)*MOD(ROW(B1:B5),2))} D1: {=MAX(OFFSET($A3,COLUMN(C1)-1,COLUMN(C1)-1,5,)*MOD(ROW(C1:C5),2))} としたところ、いずれもエラー #VALUE! が返ってきます。 なぜエラーになるのか理解できません。どなたか私にアドバイスをいただけませんか? 参考までに申し上げると、http://okwave.jp/qa/q5897615.html の質問の回答を考えているときに、上の問題に遭遇しました。

  • 情報を入力すると反映されるシート【説明画像あり】

    図1の、【入力シート】の黄色セルに、任意の情報を入力すると ⇒【反映シート】図2のように情報が反映されます。 しかし、【反映シート】を図3のように、列幅を変更したフォーマットにすると 図2のように反映されません 図3の列幅にしても、反映されるようにするには、どのように関数を変更すれば良いでしょうか?? ご存知の方、いらっしゃいましたら、宜しくお願いします。 【関数説明】 ★図2のA10セルに下記の関数が入っています。  同関数を、A10から、右に、L10までオートフィルドラック。  さらに、下に、L14まで、オートフィルドラックします。 =IF(MOD(COLUMN(A1),4)=1,IF(INT(COLUMN(A1)/4)*5+ROW(A1)>入力シート!$B$35,"",INT(COLUMN(A1)/4)*5+ROW(A1)),IF(AND(MOD(COLUMN(A1),4)=2,OFFSET(A10,0,-1)<>""),TEXT(DATE(YEAR(入力シート!$B$39&"1日"),MONTH(入力シート!$B$39&"1日")+INT((COLUMN(A1)-1)/4)*5+ROW(A1)-1,1),"e"),IF(AND(MOD(COLUMN(A1),4)=3,OFFSET(A10,0,-1)<>""),MONTH(DATE(YEAR(入力シート!$B$39&"1日"),MONTH(入力シート!$B$39&"1日")+INT((COLUMN(A1)-2)/4)*5+ROW(A1)-1,1)),IF(AND(MOD(COLUMN(A1),4)=0,OFFSET(A10,0,-1)<>""),入力シート!$B$38+IF(OFFSET(A10,0,-1)=入力シート!$B$36,入力シート!$B$37,IF(OFFSET(A10,0,-1)=入力シート!$C$36,入力シート!$C$37,0)),"")))) ★★★上記関数は、教えてgoo回答者様にご教授いただきました★★★ ★B40には下記の関数が入っています。 =DATE(YEAR(B39&"1日"),MONTH(B39&"1日")+B35-1,25) ※図1と図2は、同じブック内にある、別のシートです。

  • エクセルの空白を詰めて別シートに表示

    sheet1のデータを参照して、空白を詰めてsheet2へ表示させたいんです! sheet1(元データになるもの)  A列 |B列|C列・・・ 1行目A|100|100 2行目B|  |200 3行目C|100| 4行目D|  |200 5行目E|100| 6行目F|  |100 ・ ・ sheet2(sheet1でB列に入力があるものを抽出)  A列 |B列 1行目A|100 2行目C|100 3行目E|100 sheet3(sheet1でC列に入力があるものを抽出)  A列 |B列 1行目A|100 2行目B|200 3行目D|200 4行目F|100 sheet2のA1に下記の式を入力してA列とB列に数式をコピー =IF(COUNT(Sheet1!$B$1:$B$6)<ROW(A1),"",INDEX(Sheet1!A$1:A$6,SMALL(IF(Sheet1!$B$1:$B$6<>"",ROW($A$1:$A$6)),ROW(A1)))) すると下記のように表示されます。 A1=A     B1=100 A2=#NUM! B2=#NUM! A3=#NUM! B3=#NUM! 4行目から空白 sheet2のA2のところにエラーが出ていますが、「関数の引数」のところで「数式の結果」には「100」と 正解が表示されています。(B2、A3、B3も同様に)数式の結果のところには正解が表示されています。 答えの「#NUM!」のところに正解を表示させるには、どうしたらいいですか? 見よう見まねでつくったのもで。。。関数にあまり詳しくありません。 よろしくお願い致します。

  • エクセルの列 1行おきに色行けをしたい。

    Windows 7 Excel 2010 を使用しています。 エクセルのシートに、1行おきに色付けをするには、「=MOD(ROW()、2)」という関数がありますが、 A列・B列・・・・・・の1行おきの列に色付けをする関数がありましたら教えてください。

  • 別シートに任意のセルを転記する方法について

    縦に6行ずつのデータがあり、これを横1行の別シートに転記する際に、 以前こちらで回答頂いた方法を応用したいと考えています。 =IF(INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))=0,"",INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))) アドバイスのとおり、上記の数式で見事に横にデータが転記できました。社員1人につき6行ずつのデータが縦にならんでおり、これを別の社員1人あたり1行で横に並んだデータにしたいというものでした。 1人目のデータは1行目を1列目に、2行目を2列目に・・・2人目のデータである7行目を1列目に、8行目を2列目に・・・3人目は13行目を1列目に・・・となります。 しかし、順次並べるのではなく、転記の必要にないデータを含むシートの任意のセルを選び、別シートの任意のセルへ転記する必要が生じたため、悩んで路頭に迷っております。。。 例えば、6行ずつのデータのうち、いつも3行目を別シートの5列目に。4行目は転記せずに、5行目を6列目に。また、6行目を7列目に転記せずに10列目に転記する。(8・9列目は、別データを入力するため空白にしたい) そして、社員2人目である7行目からは、上記と同じ規則で転記したい。 などというように、選んで転記する方法は何かありますでしょうか?? =INDEX(Sheet1!$Z:$Z,(ROW(B2)-ROW($B$2))*6+IF(COLUMN()=4,MOD(COLUMN(B2)-1,6)+1,MOD(COLUMN(B2)-1,7))) のようにしても上手くいきません。 何卒宜しく御願いいたします。

  • エクセル:別のシートへ抽出したデータをリンクさせたい。

    QNo.2970713の質問内容についてなのですが、 次のようなシートがあります。(シートAとします。)     A    B    C  … [1] 001  AAA [2] 002  BBB  あああ [3] 003  CCC [4] 004  DDD   [5] 005  EEE  いいい C列の空欄データは除外して、C列にデータが記入されているものだけ別のシートに(シートB)に行ごとリンクさせたいと考えています。 (この場合だと2列と5列です。) シートAには今後もデータが追加される想定で、新しいデータで当てはまるものは自動的にシートBに反映されるようにさせたいです。 この回答の中で、 ★SheetBに =IF(ROW(A1)>COUNTA(SheetA!$C:$C),"",INDEX(SheetA!A:A,SMALL(INDEX(SUBSTITUTE((SheetA!$C$1:$C$10<>"")*1,0,10^5)*ROW(SheetA!$C$1:$C$10),),ROW(A1)))) ★右と下にコピー あるのですが、C列がvlookuo等の数式が入っていると、#REF!となってしまします。 この#REF!を表示させない方法を教えて下さい。

  • Excel 空白セルを詰めて表示する方法

    <sheet1>にある表をオートフィルタを使用せず,関数で<sheet2>のように空白を詰めた状態にしたいと思っています。 <sheet1>    A    B   C 1 100 -100 2 100 -100 3 -200 100 100 4 5 <sheet2>    A    B   C 1 100 -100 -100 2 -200 100 100 3 100 4 以前に似た質問があり,それを参考にやってみたのですがどうもうまくいきませんでした。文字列と数値では式も変わるものなのでしょうか?参考にした例もあげておきます ------以下,参考にした例------ <図1>     A     B 1   あいう 2         えお 3   かきく 4         けこ 5   さしす <図2>各行の空白セルを詰めて表示させる     A     B     10  あいう   えお 11  かきく   けこ 12  さしす 13 14 【関数】 A10: =IF(ROW(A1)>COUNTA(A$1:A$5),"",INDEX(A$1:A$5,SMALL(IF(A$1:A$5<>"",ROW($A$1:$A$5),""),ROW(A1))))

  • 縦書きの表を以下のようにするには?

      A   B  C   D   E  F  G 1期日 場所 番号 数量 合計 23/1   A  7   20  60 33/2   A  8   30  80 43/3   B  9   45  75 53/4   D  5   15  90  のような形の表を  期日 3/1 3/2 3/3 3/4  場所  A  A  B  D  番号 7  8  9  5  数量 20 30 45 15  合計 60 80 75 90 と書き換えたり、別シート表示させたりする場合には『型式を選択→行列を入替貼付』またはTRANSUPOSE関数を使用するのは知っています。検索行列関数で表示するにはどうすればいいでしょうか?  関数式で元シートに表示させる場合は、INDIRECT,ADRESS,OFFSET,INDEX,INT,MOD,ROW,COLUMN関数を使い、数値を+-したりします。  個々の1つ1つの関数は『こう使う』というのは何となく分かるのですが、これらが幾重にも複合ネストされると『何でこのセルがこの位置に移って表示されるのか理屈が分かりません。  以前、似たような質問で回答いただき、目的は果たせましたが、未だに何故そうなるのか理解できておりません。  縦→横に入替え、またはその逆の表示をさせたい場合、これらの関数は必ず出てきます。  上記の元の表にE列に合計を表示してますが、F列以降にデーターが増加すると  下の配列表示にするにはINT,MOD,ROW,COLUMN関数のどこの数値を増減するのか相互関係が分かりません。  参考書を買い、独学で学習していますが、難しいです。皆さんはどのようにして覚えられたのか、お聞きしたいです。  やはりPCスクールに行かないと無理なんでしょうか?この辺の関数を理解できそうなサイトをご存知だったら教えていただけないでしょうか?  私はINDIRECT,ADRESS,OFFSET,INDEX,INT,MOD,ROW,COLUMN関数等を凄く苦手にしています。  

  • 「エクセルでデータのある行だけを他のシートに抽出する」を参考にしたのですが・・・

    下記過去の質問・回答を見つけ私も参考にさせて頂きましたが手詰まって困っています。 http://okwave.jp/qa943364.html なおこの質問の数式・例は全て過去質問の回答者:imogasiの回答を参考にさせて頂きました。 やりたい事→データを抽出する場所(A1をA3/B1をB3)を変更したいのです。 現状は(例データ)Sheet2のA1:B9(C列は関数式を入れた結果) A  B C 210 伊藤 1 211 山田 2 212 0 2 214 2 216 近藤 3 217 鈴木 4 219 0 4 220 4 221 大田 5 Sheets2の C1に=IF(A1="","",COUNTA($B$1:B1)-COUNTIF($B$1:B1,0))がはいり下にコピーしてます。 抽出するSheets3の A1に=IF(ROW()>MAX(Sheet2!C:C),"",OFFSET(Sheet2!$A$1,MATCH(ROW(),Sheet2!$C$1:$C$30,0)-1,0)) B1に=IF(ROW()>MAX(Sheet2!C:C),"",OFFSET(Sheet2!$A$1,MATCH(ROW(),Sheet2!$C$1:$C$30,0)-1,1)) 上記でうまくデータを抽出できるのですが、抽出する場所をA1及びB1を変更するとうまく抽出できません。 抽出場所をA3及びB3にする為にはどのような工夫が必要になるのでしょうか?

  • エクセル SUMPRODUCT と OFFSET

    いつもお世話になります。 SUMPRODUCT関数で集計したいのですが、OFFSET関数を組合せてA1に関数を入力し、右にひっぱるだけで36ヶ月分を集計したいと思い、下記の計算式を入力したのですが#VALUE!になり困ってます。 A1=SUMPRODUCT((OFFSET(data!$A$1,1,COLUMN(A1)*3-3,99,1)=$G$1)*(OFFSET(data!$B$1,1,COLUMN(A1)*3-3,99,1)=$H$1),(OFFSET(data!$C$1,1,COLUMN(A1)*3-3,99,1))) dataシートには、A列:商品CD、 B列:営業所CD、 C列:売上金額 の3列のデータが、36か月分108列あります。 集計するシートのG1に商品CDを、H1に営業所CDを入力すると、A1~A36に集計結果を返したいのですが、教えてくださいませんか

専門家に質問してみよう