エクセルの関数、セルの参照について

このQ&Aのポイント
  • エクセルの関数やセルの参照について質問です。土曜日と日曜日の数字の変動がない場合、見た目を考慮して空欄にしたいと思っていますが、どのような数式が最適でしょうか?また、セルの参照方法についてもお知りになりたいようです。
回答を見る
  • ベストアンサー

エクセルの関数、セルの参照について

いつもお世話になっております。 添付ファイルのような表を作成しました。 やりたい事は、 (1)累計の欄に数字を直接記載する。 (2)単日の欄に当日と前日の数字の差を記載する(E10はD10-D5) という簡単な表なのですが、土曜日と日曜日は数字の変動がないため、見た目を考えて空欄にしたいと思ってます。 そうすると、4日のE20はD20-D5になるので、数式のコピーではうまく行きません。 今の私の知識だと、IF関数でダラダラと数式を作って行くしか思いつきません。 そこで、土日は金曜日の数字を記載して、条件付き書式で土日は白文字にして見た目だけ空欄にしようかなと考えました。  =weekday(B3)=1のときは白文字    =weekday(B3)=7のときは白文字 セル範囲はD5:E7  としたのですが、これだとD6とD7も白文字になってしまいます。 B3を絶対参照にすると、解決しますが、コピーした場合、また、セルの参照をするしかありません。 スミマセン分かりずらい文章をダラダラと書きましたが、要は、 (1)土曜日、日曜日は計算の対象から外したい場合は、どのような数式が最適でしょうか? (2)セルの参照方法として、B3が●●だったら、D5~D7を○○したい場合、B3セルを絶対参照すればいいわけですが、コピーした場合は、個別に参照しなおすしかないのでしょうか? どなたかご教示をお願いします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 回答No.2です。  不明な点に関する情報を未だに補足頂けない様ですので、取り敢えずとの話として、 ●数字を表示しないのは土日だけであり、祝日や振替休日には平日と同様に数字を表示しなければならない ●初日が土日であるか否かには関わらず、D5セルには前月からの累計が必ず入力されている という条件の下で話を進めさせて頂きます。  数字が表示されないのは土日だけであり、火曜日~金曜日の場合は特に問題が無いのは無論の事、土日の日の場合もD列とE列に何も表示しないのですから、計算が問題になるのは月曜日だけであり、月曜日の場合にのみ3日前のデータを参照すれば良いという事になります。  尚、祝日にも数字が入力されるという条件なのですから、金曜日の日の所に数字が入力されていないという事を心配する必要は無い筈です。  そして、2日目か3日目が月曜日である場合には、1日目のデータを参照する様にすれば良い訳です。  ですから、E10セルに入力する関数の一例は次の様なものとなります。 =IF(AND(ISNUMBER($D10),ISNUMBER(INDEX($B:$B,ROW()-MOD(ROW()-ROW($A$3),5)))),IF(WEEKDAY(INDEX($B:$B,ROW()-MOD(ROW()-ROW($A$3),5)),2)>5,"",$D10-INDEX($D:$D,MAX(ROW()-5*(1+2*(WEEKDAY(INDEX($B:$B,ROW()-MOD(ROW()-ROW($A$3),5)))=2)),ROW($D$4)+MOD(ROW()-ROW($D$4),5)))),"")  もし、E11セルやE12セルの値も、E10セルの場合と同様に、D列の同じ行にあるセルの値から前日の累計(但し、E11の参照先はE10の参照先の1つ下で、E12の参照先はE10の参照先の2つ下)を差し引いた値とする場合には、上記の関数をE10セルに入力してから、E10セルをコピーして、E11~E12の範囲に貼り付けて、その上で、E8~E12の範囲をまとめて範囲コピーして、E13~E157の範囲に貼り付けて下さい。

genta1019boston
質問者

お礼

ありがとうございます

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! 一案です。 A列・B列をすべてシリアル値としてみてはどうでしょうか? A1(結合セル)の表示形式はユーザー定義から 0年 としておいて、2013と数値のみを入力 同様にD1セルの表示形式もユーザー定義から 0月 としておき 11 のように数値のみを入力 A3~A7セルを結合し → セルの表示形式はユーザー定義から d としておき、 =IF(MONTH(DATE(A$1,D$1,ROW(A5)/5))=D$1,DATE(A$1,D$1,ROW(A5)/5),"") という数式を入れておきます。 B3~B7セルを結合 → セルの表示形式はユーザー定義から aaa としておき =IF(A3="","",A3) としてA3・B3セルを選択 → B3セルのフィルハンドルで31日分オートフィルで下へコピー! 次にE5セルを選択 → 条件付き書式 → 新しいルール → 「数式を使用して・・・」 → 数式欄に =AND(A3<>"",WEEKDAY(A3,2)>5) として → 書式 → フォントの「白」を選択しOK (ここでは条件好き書式だけ設定し、セルに数式は入力しません) D3~E7を範囲指定 → E7セルのフィルハンドルで下へ5行だけコピー! ここでE10セルに数式を入れます。 =D10-E5 と入れてOK 最後にD8~E12を範囲指定 → E12セルのフィルハンドルで最終行(31日)まで 5行ずつ下へコピー! これで数式もコピーされますし、条件付き書式で土日のフォントは白になり見えなくなると思います。 ※ その月の初日だけは手入力となります。 こんな感じではどうでしょうか?m(_ _)m

genta1019boston
質問者

お礼

ありがとうございます

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 確認したいのですが、 >そうすると、4日のE20はD20-D5になるので、数式のコピーではうまく行きません。 と書かれている所から考えて、4日の日は振替休日であるにもかかわらず数字を表示するという事だと思われます。  そうしますと、数字を表示しないのは土日だけであり、祝日や振替休日には数字を表示しなければならないという事なのでしょうか?  それから、1日の日が土日の場合には、前日の日のデータを、一体どうやって知れば良いのでしょうか?

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

土日を白文字でいいなら =WEEKDAY(INDIRECT("B"&FLOOR(ROW()+2,5)-2),2)>5 でD3:D7はB3を参照、D8:D12はB8を参照します。 あとWEEKDAY(参照セル,2)にすれば土=6,日=7になるので、>5でまとめられます。

genta1019boston
質問者

お礼

ありがとうございます

関連するQ&A

  • セルを参照させる関数について

    C列には関数で返ってきている値が入っています。(たとえば単純にC1のセルには=SUM(A1:B1)と入っている)そのままC1を横にドラッグしてコピーするとD1のセルには単純に=SUM(B1:C1)となりますが、見に行くセルをC2に、E1のセルの参照するセルはC3を。。。という風に参照させるにはどんな関数を使用すればいいのでしょうか? (単純にD1のセルに=C2と設定はしたくないのが前提です)

  • Excel 一番右のセルを参照する

    Excelで、A1からZ1のセルの内で一番右の入力してあるセルの数字を参照したい場合はどうしたらいいのでしょうか。 例えば、A1,B1,C2,D1,E1にそれぞれ、5, (未入力), 10,7,(未入力)とかの場合は、入力されている中で一番右側にあるD1にある7がその答えになります。

  • Excelセルの参照

    Excelにdataとnという2シートがあります。dataシートのA列3行目~22行目にデータが縦入力されており、以降B列、C列とデータ入力が繰り返されます。 nシートでdataシートの入力値参照のため、あらかじめdataシートの参照リンクを貼っておきたいのですが、nシートのデータは横並びであるせいか、参照リンクをうまくコピーすることができません。 dataセルのA3セルの値をnシートのD1に=data!A3と貼り付けて、W1(=data!A22)まで数式を自動コピーできないでしょうか。また、D2~W2まで=data!B3~=data!B22など参照リンクをコピーで作成できないでしょうか。 よろしくお願いいたします。 横並びに参照する必要があるのですが、

  • EXCEL 特定位置のセルを参照したい

    お世話になります。田中ともうします。 あるシートのD8~AZ8の間に"E"という文字があります。この"E"の位置は可変です。 D1に数式を入れたいのです。 上記範囲(D8-AZ8)の間で"E"があるセルの左から2列目の値をD1から参照したいのですが、 数式がわからないのです・・ どなたかご教授いただけますでしょうか。 よろしくお願い致します。 EXCEL2013

  • Excelで参照をして計算式を作る方法

    こんにちは。 Excelの数式で困っていますので、教えて下さい。 下のようなExcelの表で、 A2~D2、A3~D3、A4~D4の【数】にはゼロを含む何らかの数字が入ってて、 【空】は空欄です。    A列 B列 C列 D列 E列 1   1   2   3   4 2   数  数  数  数 3   空  数  数  数 4   空  空  数  数  E2、E3、E4に数式を入れたいのですが、2~4行目の数字が入っているか 入っていないかを1行目の数字に対応させて、 A2、A3、A4に数字が入っていれば、A1の数字を計算に入れて、空欄であれば 計算にいれない。 E2には1+2+3+4で【10】 E3には2+3+4で【9】 E4は3+4で【7】 というふうに数字が入っている欄だけを1行目の数字を絶対参照して合計を求めたいのです。 SUMIFという関数を使って、E2にSUMIF(A2:D2,▲,$A$1:$D$4)という式を入れてみたのですが、▲には半角スペース・*(アスタリスク)・?(クエスチョンマーク)などを入れてみたのですが、エラーで計算が成り立ちません。 ▲のところに【空欄】という意味のものを入れたいのですが、それがあるのかないのかわかりません。 もしくは、この数式を使うのではなく、他の数式を利用するのでしょうか? 説明が分かりにくいかもしれませんが、よろしくお願いします。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • エクセル2002のセル参照での色分け表示

    エクセル2002でセルに数式を入力して、そのセルを編集状態にすると参照セルが色の付いた枠で表示されますが、その表示がセルの参照が33個になったら突然表示がされなくなってしまいます。エクセルの仕様を調べてみてもそのような記述は見当たりません。 入力した数式は  +a1+b1+c1+d1+e1+f1+g1+h1 のよう形で、複数のセルを単純に足し算するものです。よろしくお願いします。

  • エクセルの相対参照について

    お世話になります。 以下の例について教えてください。 C1 のセルに●●+▲▲ という数式を入力しておく B2 が空欄なら C2 は空欄にする。 B2 に何か入力された場合、C1の数式を複写(相対参照)してC2 に計算結果を出す。 というようにしたい。 この場合、C2 のセルの =IF(B2="","",■■■■)   ■■■■にはどう入力すればよいでしょうか? 毎回データ数が違うので、フィルハンドル使って伸ばさなくてもいいようにしたいのです。よろしくお願いします。

  • エクセルのセル参照

    エクセルですが、セル参照の件で困っとります。 同一シート内ではセル参照(shift =)ができるのですが、他のシートのセルを参照させると、数式が出て、セル内に文字が出ません。 どうすれば他のシートのセル参照ができるようになりますか?

  • エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ、「右詰」で移したい

    以前に エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい、ということで質問しまして、「MID関数を利用する」事で、先頭文字から一文字ずつ別々なセルに移すことが出来ましたが、スミマセンが次のような場合はどのような関数になるのでしょうか? 例えば「番地などの表示」等で1桁の場合もあれば、5桁あるいは6桁等々の場合もあるとします。これを別なセルに下一桁を合せる様にしたいのです。 例としまして セルA1に1桁~6桁の数字(例:345678)を入力した場合、これを右側のB1には3を、同様にC1には4を、D1=5、E1=6、F1=7、G1=8を関数で入力できるようにしたい。 問題は、桁数が毎回違う場合にG1に下一桁が来るようにしたいのですがRIGHT関数では下一桁だけ応答されるのは上手くいくのですが、下二桁、三桁以上の場合には上手くいきません。 つまり「A1に789」の数字を入力したら、G1=9が、F1=8が、E1=7が応答されるようにしたいのです。 勿論、5桁の場合にはB1が空欄で、C1、D1、E1、F1、G1が埋まる様に、4桁であればB1とC1が空欄で、D1~G1が埋まるように、三桁の場合にはB1~D1が空欄でE1~G1が埋まるようにですが、出来ますでしょうか?? よろしくご教授お願いします。

専門家に質問してみよう