Excel 関数 ①特定のセルに色をつけたい、②①の内容を別シートにリンクして表示させたい。

Anonymous
2022-08-21T07:51:40+00:00

2022/08/21

下記の図のように ①特定のセルに色をつけたい、②①の内容を別シートにリンクして表示させたい。

解る方がいらっしゃいましたら、教えていただきたいです。

どうぞ、宜しくお願いします。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません
質問作成者が受け入れた回答
ひまじん 17,185 評価のポイント
2022-10-16T15:42:06+00:00

お役に立てたようで良かったです。

私など常にミスの繰り返しです。それを次回に生かせれば良いのではありませんか?。

お忙しい中、大変かと思いますが、実用的で良いものを作るために頑張ってください!!。

さて、時刻の差分の計算方法ですが・・、

前提として、15:00 といったような時刻を表すのに 1500 という数値を入力していて、「セルの書式設定」で「 : 」を表示させているということですね。

例えば、A1セルと B1セルにそういった方法で時刻を表示させている場合、その差分を求める数式は以下のようになります。一例です。

・番外数式

=ABS(TEXT(A1,"0!:00")-TEXT(B1,"0!:00"))

※時間ではなく時刻同士の差分をとる場合、結果がマイナスの時刻になることは有り得ないので、ABS 関数で差分の絶対値をとっています。

尚、この数式を入れるセルでは、「セルの書式設定」の「表示形式」の「ユーザー定義」で [h]:mm を設定してください。

また、エラー処理は何も行っていませんので、必要であればご自身で工夫してみてください。

下記番外図は、A1:B10 に適当な数値( 1500、1559、・・といった数値。「 : 」は「セルの書式設定」で付加)を入れ、上記の数式を C1:C10 の範囲にコピー・貼り付けした結果です。(この範囲に「セルの書式設定」で [h]:mm も設定しています。)

※具体的なコピー方法としては、C1セルに上記の数式を貼り付け、これをコピーし下方向(行方向)に C10セルまで貼り付けています。(慣れていれば、オートフィルでコピーしたほうが簡単です。)念のため追記。

・番外図

画像

ご参考になれば幸いです。

尚、関連質問なら良いのですが、1スレッド1質問が原則ですので、全く関連のない新たな質問は新規スレッドでお願いいたします。

うっかりされたのかと思いますが、以後、お気を付けください。

上記の数式・図ともに、本来の質問と同様の通番を付加すると紛らわしいので、「番外」という文字列を付加して区別しています。他意はありません。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません
質問作成者が受け入れた回答
ひまじん 17,185 評価のポイント
2022-10-10T07:38:39+00:00

こんにちは。

>検証する時間まで割いていただきありがとうございます。

”ひまじん”なのでお気になさらず。こういった問題を考えるのも好きなので、却って恐縮です。

本題ですが、提示されている A6セル、A7セル、A8セルの数式が、それで間違いないのであれば、原因はコピー・貼り付けの際の手順の間違いかと思います。

前回書いたように、数式4-2をコピーし、A6セルに貼り付けた後これを配列数式にするところまでは間違っていません。

おそらくですが、その後、A7セル以降にも数式4-2そのものを貼り付けていったのではありませんか?。

そうだとすれば、その貼り付け手順が間違っています。

数式4-2の最後のほうに ROW(A1) と書いている箇所がありますが、これはこの数式を A6セルに貼り付けて配列数式にした後、その配列数式をコピーし A7セル以降(行方向)に貼り付けていくことで、自動的に ROW(A2),ROW(A3),・・・というようにカウントアップさせたいために書いています。(コピー・貼り付けの後の各セルの数式の違いは、唯一この箇所だけです。)

これにより、1,2,3,・・・というような数値を SMALL 関数に渡すことができ、火曜日と金曜日の日付を小さい順に取り出すことが出来るからです。

つまり、A6セルの数式では ROW(A1) で良いのですが、その他のセルでは、

A7セル ROW(A2)

A8セル ROW(A3)

 ・

 ・

 ・

というように自動的に変化しなければ、日付を小さい順に取り出すことが出来ません。

提示されている、A6セル、A7セル、A8セルの数式では、全て ROW(A1) となってしまっています。

各セルの数式が同一の状態だとすると、数式の他の部分は全て同一(正常)なので、表示される日付は全て 1/4 となります。

<数式4-2の貼り付け手順>

以下、数式4-2を A6セルに貼り付け、これを配列数式にした後の手順です。

  • 誤った手順(推測です)
    数式4-2そのものを A6セルと同様に、A7セルから A15セルの 範囲で、1セルずつ貼り付けては配列数式にするといった手順を繰り返す。
  • 正しい手順
    数式4-2そのものではなく、A6セルに貼り付けて配列数式にしたものをコピーし、A7セルから A15セルに貼り付ける。

※9月26日に書いた数式4-2のコピー方法の説明が紛らわしかったかもしれませんね・・。失礼いたしました。

尚、最新版の Excel であれば「スピル」が働くので、数式4-1を使い、これをコピーし A6セルに貼り付けるだけで済んでしまいます。

A6セルの数式を配列数式にする必要も、これをコピーして A7セル以降に貼り付ける必要もありません。

この辺が、旧来の Excel との大きな違いです。

※上記の説明文の中では、特に強調したい場合を除き「配列数式」も「数式」と書いています。必要であれば、適当に読み換えてください。

ご参考まで。

<修正>

最後のほうで最新版の Excel との違いを書きましたが、「数式4-2」と書いてしまっていましたので、「数式4-1」に修正しました。

この部分の文章そのものも修正しました。失礼いたしました。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません
質問作成者が受け入れた回答
ひまじん 17,185 評価のポイント
2022-08-30T15:05:34+00:00

おっとっと~・・・。

①、②を行うためには、これまでご紹介してきた数式を更に変更する必要があります。

数式がいくつもあって煩雑で分かりにくくなってきましたので、改めて、①、②を考慮した「提案1」としてまとめてみました。

「提案1」は、全て最初から作りなおす場合を想定して書いています。ご注意ください。

<提案1>

[ カレンダーの作成 ]

  1. シート名(①を考慮。)
    何年かといった数字を加えずに、単に「カレンダー」とします。
  2. 1行目の入力(②を考慮。)
    A1セルに 2022/1/1 、B1セルに 2022/2/1 、・・・というように月初の日付を入力していき、最後に L1セルに 2022/12/1 を入力します。
    ※単に 1/1 とかではなく 2022/1/1 というように、必ず「年」の入力を行ってください。
  3. 2行目以降の数式(②を考慮。)
    A2セルに以下の数式3を入力(あるいはコピー・貼り付け)し、これを右方向(列方向)に L2セルまでコピーし、更に、A2セルから L2セルまでを選択したまま 31行目までコピーします。
    ・数式3
    =IF(A1<EOMONTH(A$1,0),A1+1,"")
  4. 曜日の表示
    日付部分全体( A1:L31 の範囲)を選択し、「セルの書式設定」->「表示形式」->「ユーザー定義」で yyyy/m/d"("aaa")" を設定します。

図4は、上記の手順でカレンダーを作成した結果です。

・図4

画像

※尚、各セルの背景色の色付けについては「条件付き書式」で行っていますが、ご自身で設定できているようですし、こういった色付けは各数式に影響しませんので設定方法等は省略します。

[ 物品発注書の作成 ]

※以下で書いている部分以外については書き込み済みと想定しています。

  1. シート名(①を考慮。)
    まず最初に 1月のシートを作るので、シート名を「1月」とします。
  2. 数式の入力(①を考慮。)
    A6セルに以下の数式4を入力(あるいはコピー・貼り付け)します。
    ・数式4(数式1-1修正版の改修版。)
    =LET(dt,OFFSET(カレンダー!$A$1,,TRIM(RIGHT(SUBSTITUTE(LEFT(CELL("filename",A1),LEN(CELL("filename",A1))-1),"]"," "),2))*1-1,31,),FILTER(dt,IFERROR((WEEKDAY(dt)=3)+(WEEKDAY(dt)=6),0)))

・変な箇所で自動的に改行されているかもしれませんが、全部で 1行の数式です。
・この数式では「スピル」が働きます(最新版の Excel ではこれが標準です)ので、A6セルに数式を入れるだけで A列に必要な日付データがすべて表示されます。( FILTER 関数は、この「スピル」が働かないと動作しません。)
・この数式では、シート名から何月の日付データを表示しなければならないのかを判断しています。
例えば、シート名が「1月」でしたら、この数式4の入力と下記の数式5のコピーが終わった時点で、「カレンダー」シートのデータを参照して 1月の全ての日付データが表示されます。

C6セルに以下の数式5を入力(あるいはコピー・貼り付け)します。
・数式5(数式2と同じもの。)
=IF(A6="","",A6+1)

・この数式を C15セルまでコピーします。( C15セルとしているのは、ここまでは表示されないだろうと推測できる最大の範囲だからです。)
・この数式では、単純に A6セルが空白だったら空白(空白の文字列)を表示し、空白でなければ A6セルの日付を +1 して表示します。

※両方の数式の入力後、A列と C列の日付データ両方に、「セルの書式設定」->「表示形式」->「ユーザー定義」で m/d"("aaa")" を設定します。

※おまけ(笑)
A1セルに以下の数式6を入力(あるいはコピー・貼り付け)します。
A1セル(結合セル)には「2022年 1月 物品発注書」といった文字列を入力しているかと思いますが、この部分も以下の数式6を入力することで「年月」の自動入力が可能です。よろしければ組み込んでみてください。
・数式6
=TEXT(カレンダー!$A$1,"yyyy")&"年 "&TRIM(RIGHT(SUBSTITUTE(LEFT(CELL("filename",A1),LEN(CELL("filename",A1))-1),"]"," "),2))&"月 物品発注書"

・変な箇所で自動的に改行されているかもしれませんが、全部で 1行の数式です。

・この数式では、「カレンダー」シートの A1セルの内容から「年」の情報を取り出し、このシートのシート名から「月」の情報を取り出して表示させています。
  1. 各月のシート作成
    数式4では、シート名の中から「月」のデータを取り出して、何月の日付データを表示しなければならないかを判断し、「カレンダー」の中から該当の日付データを取り出しています。
    なので、「カレンダー」が出来ているのであれば(色付けは特に必要ありません)、以下のような方法で簡単に 12ヶ月分の「物品発注書」を一気に作り上げることが出来ます。

[1]「1月」のシートのコピーを作成し、シート名を「2月」に変更するだけで 2月分が出来る。
[2」シートのコピーを繰り返し、シート名の月の部分の数字を変えるだけで 12ヶ月分の「物品発注書」が出来上がる。
※もちろん、毎月手書きで修正しなければならない箇所については、修正が必要ですが・・。

図5は上記の手順で「物品発注書」を作成した結果です。(おまけ含む)
※画像キャプチャしきれないため、1月、2月、5月、12月のみ表示させています。
・図5
画像

[ 翌年からの運用 ]

  1. 今年(2022年)作成したファイルをコピーします。(ファイル名は何でも可。)
  2. コピーしたファイルを開き、「カレンダー」シートの A1セルの日付データを 2023/1/1 に変更(年を変更)し、同様の変更を L1セル( 12月分)まで繰り返します。

※これだけで、その年の「カレンダー」も「物品発注書」の日付データも 12ヶ月分が一気に出来上がります。

以上です。

尚、個人的な感想ですが、図4の「カレンダー」の表示は細かすぎて見にくくないですか?。

「セルの書式設定」で「年」データを表示しないように設定すれば良いかと思うのですが、そうすると今度は何年の日付なのか分からなくなってしまいます。

そこで例えば、図6のような「カレンダー」(いわゆる「万年カレンダー」です)にすれば、かなり見やすくなりますし、「年」データを 1行目( 1ヵ所)に入力するだけで、その年の「カレンダー」も「物品発注書」の日付データも 12ヶ月分を一気に作成することも可能です。

・図6

画像

これを「提案2」としてご紹介するつもりで「物品発注書」の数式も含め全て作ってみたのですが、ちょっと疲れ気味で・・、今はただ単に代案もあるということで憶えておいていただければと思います。

図6の「万年カレンダー」は、色々と応用も利きます。今回だけではなく別の機会に使ってみても良いかと思いますよ。

  • A1セル(結合セル)には「年」のデータを数値で入れ、「セルの書式設定」で G/標準"年" を設定。
  • A2セルには「月」のデータを数値で入れ、「セルの書式設定」で G/標準"月" を設定した後、これをオートフィルで L2セルまで連続データとしてコピー。
  • A3セルの数式は =DATE($A1,COLUMN(A1),1) です。これを L3セルまでコピー。
  • A4セルの数式は =IF(A3<EOMONTH(A$3,0),A3+1,"") です。これを A4:L33 の範囲にコピー。
  • A3:L33 の範囲には、「セルの書式設定」で d"("aaa")" を設定。

お役に立てれば幸いです。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

31 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2022-08-21T17:07:45+00:00

    こんにちは

    今日のご挨拶!

    私はあなたのクエリに実行可能なソリューションを提供してうれしいです。

    オプション 1: 強調表示する条件付き書式

    以下の手順に従ってください。強調表示する値の範囲を選択し、要件に基づいて数値または日時として書式設定します。 また、範囲を選択するか、または色の書式設定が必要な別の列で、手順に従います。

    1. [ホーム] タブの|スタイル |条件付き書式|ルールの管理
    2. 新しいルールを作成し、[数式を使用して書式を設定するセルを決定する] を選択します。
    3. 数式を入力します (下記のサンプル数式。必要に応じて変更できます)。 4.必要に応じて塗りつぶしの色をフォーマットする
    4. [OK] をクリックし、選択範囲に適用します。 6.拡張したい場合は、フォーマットをクリックし、必要に応じて適用します。私は以下の例を使用しました。(実際の値は16行目から始まります)

    サンプル式:

    1. フォーマットを緑で追加 - =IF(AND(DAYS(D2,C2)<30,DAYS(D2,C2)<90),TRUE,FALSE) (プレビューは緑で塗りつぶされます) 2. フォーマットを追加する Yellow- =IF(AND(DAYS(D2,C2)>30,DAYS(D2,C2)<90),TRUE,FALSE) (プレビューは黄色で塗りつぶされます) 3. フォーマットを追加 Red- = DAYS(D2,C2)>90 (プレビューは赤で塗りつぶされます)

    使用したサンプル データ。

    クライアント名 入学日 1日 90日間完了日 ラヴィクマール 2022/07/25 2022/07/26 2022/08/26

    詳細な手順については、以下のリンクを参照してください。https://www.inoks.com/how-to-highlight-cells-in-excel-based-on-the-contents-of-other-cells/

    オプション 2: 同じファイルにセル参照を作成するが、別のワークシートを作成する

    これを理解するには、Excel でのセル参照に注意する必要があります。A1 は、一般的に使用される既定のスタイルです。この形式では、列は文字で定義され、行は数字で定義され、

    したがって、セルを参照する一般的な数式は=(A1 * B1)のようになります。これは、列AとBが同じシートの最初の行で参照されているようなものです。

    同じ数式を使用して、別のワークシートのフィールドを参照できます。 これは、= A1 * シート2のようになります!B1 · この参照は、現在のシートの 'A1' と、シート 2 の 'B1' を参照するようなものです。シート番号は、セルの位置に基づいて変更できます。

    親切に詳細については、以下のリンクを参照してください。

    https://support.microsoft.com/en-us/office/create-an-external-reference-link-to-a-cell-range-in-another-workbook-c98d1803-dd75-4668-ac6a-d7cca2a9b95f

    この情報がお役に立てば幸いです。ご不明な点がございましたらお気軽にお戻りください。

    ありがとうございました! ラビクマール この返信があなたの問題を解決したかどうかを示すことによって、この問題を抱えている次の人を助けてください。下の[はい]または[いいえ]をクリックします。

    この回答は自動翻訳されています。文法や表現の誤りが発生した場合はご容赦ください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2022-08-21T15:14:58+00:00

    Microsoftコミニュティ でエクセルを送信するにはどのようにすれば良いのでしょうか。エクセルを送信する方法が解りません。エクセルを送信する方法を是非、教えていただきたいです。宜しくお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません