【復活求む!】惜しくも解散してしまったバンド|J-ROCK編 >>

添付図をご覧ください。
範囲 A3~A6 に h:mm 形式で時刻を入力しています。
式 =$A3 を入力したセル B3 を右方3列、下方3行にオートフィルしました。
B列の書式は h"時間"mm"分" に設定しました。
C、D列の書式を h"時間"m"分" に設定した後で、D列に下記の[条件付き書式]を設定しました。
ルールの適用先: =$D$3:$D$6
ルールの種類: “数式を…を決定”
ルールの内容↓
 ̄ ̄数式→=MINUTE($A3)=0、書式→表示形式を h"時間" に設定

さて、質問です。
「0時間」という表示を避けたいので、その場合はセル E3、E4 に示すように単に(?)「0分」、「23分」と、マクロを使わないで、表示させる方法があれば教えてください。

「時刻(時間)表示形式について」の質問画像

A 回答 (4件)

こんにちは



条件付き書式を追加すればできそうですが・・・?

「数式を使用して~~」から条件式として
  =$A3<1/24
を代入し、書式をユーザ定義として
  [m]"分"
に設定するのでは、いかがでしょうか?
    • good
    • 0
この回答へのお礼

なるほど!
Excel は、単に書式 m だと Month と判断するけど、[m] なら Minute と判断せざるを得ないというわけですね。
勉強になりました。
ありがとうございました!

お礼日時:2019/04/11 14:03

No.3ですと、1時間ちょうどの時に、


『1時間0分』
になってしまうのです。

それだけなんですけどね~A^^;)
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2019/04/11 14:05

時間ならhではなく[h]であるべき。



1時間未満なら普通の表示形式で条件を付加するだけで可能です。 [<0.04166666666][m]"分";[h]"時間"m"分"
「時刻(時間)表示形式について」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2019/04/11 14:05

力尽くですが、なんとかしてみました。

A^^;)

EXCELの時間の内部データは、
1日が1
1/24が1時間
24時×60分=1440で
1/1440が1分
となっています。
そうやってデータを分解して、
それを組み直して、条件に応じて
単位の『時間』『分』を付け直して
みました。
IF文で、分だけ、時間だけ、
時間と分といった場合分けを
しています。
但し、内部で扱っている小数点以下
の扱いで誤差が出るので、ひととおり
(0分~2時間まで分単位全てで)
確認してみましたが、データによって
は、切上げ切捨てがうまくいかず、
分がずれるケースもあるかもしれま
せん。よくご確認下さい。

=IF(A61*24<1,ROUND(A61*1440,0)&"分",IF(A61*24-ROUNDDOWN(A61*24,0)=0,A61*24&"時間",ROUNDDOWN(A61*24,0)&"時間"&(ROUND((A61*24-ROUNDDOWN(A61*24,0))*60,0)&"分")))

いかがでしょう?

なお、書式設定で、
『m』を単独で使うと、
『月(month)』になってしまいます。
『hm』、『ms』、『hms』といった
関係で使わないと『分』が表せない
といった制限があります。
「時刻(時間)表示形式について」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2019/04/11 14:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QExcelで「令和」と表示されるのは5月1日にならないとだめですか?

「日本の新元号に関する Office の更新プログラム」というページ(下記)で、
「Windows と Office の更新プログラムを適用済みの場合でも、Windows 上で実行されている Office 製品は 2019 年 5 月 1 日に新元号が開始されるまで、新元号を表示しませんのでご注意ください。」
と書かれています。
https://support.microsoft.com/ja-jp/help/4478844/office-updates-for-new-japanese-era

今月4月中に、Excelのセルに来月5月以降の年月日を入力した場合に、自動で「令和」という元号を表示させることはできないのでしょうか。

もし、できるということであれば、「2019 年 5 月 1 日に新元号が開始されるまで、新元号を表示しません」とはどのような意味なのでしょうか。

Aベストアンサー

>こちらでは、「4月17日以降にOfficeも更新されれば「令和元年」と表示されると思います」と書かれているんですが

その方は、Microsoftの方ではないですし個人の予想ですよね?公式が出ているのにそれを持ち出してどうするんですか?

5/1より前に新しい元号を表示したい場合は数式や表示形式で限定的に表示させる方法を色々な方が考え付いていますよ。
検索すればたくさん出てきます。

QExcelの関数で、下記のように報告値が自動で表示されるようにしたいです。 基本的には有効数字2桁表

Excelの関数で、下記のように報告値が自動で表示されるようにしたいです。
基本的には有効数字2桁表示なのですが、A列に入力した下限値の桁までの表示にしたいです。3行目、4行目のように有効数字1桁の場合もあります。5行目のような場合もあります。1日もがいてみましたが、どなたかご教授頂けたら大変助かります。

Aベストアンサー

No.4の回答者です。
No.5の回答者さんが指摘しているように、報告値で表示をする桁の
問題だと思います。

No.4の回答では、報告値に合わせるために強引な条件付き書式での
表示をしているので、計算値の0.995283を小数点一桁の1.0と表示
するようにしていますが、[下限値の桁数]での増減によって条件が
変わるので、ROUND関数での桁数の指定と条件付き書式での桁数の
指定がずれると丸める値の桁数が違うので1.00の表示になるのです。

> 数式の100を1000にしてみましたが
これについても、報告値をもとに下限値桁数に応じた10のべき乗を
使っていますが、下限値が3桁の場合に1000を使うと0.995をもとに
条件付き書式で判断するので、1以下として処理されます。

添付画像の[下限値の桁数に応じた報告値]のように、条件付き書式
設定なしでの数値を見てもらえば理解できると思います。
(C列の計算式と条件付き書式は、No.4の回答にあるもの)

[下限値の桁数に応じた報告値]列での数式
 =IF(B7<A7,"<"&A7,ROUND(B7*10^G7,IF(INT(B7)=0,0,LEN(INT(B7))*-1))/10^G7)

[下限値の桁数]列での数式
 =LEN(A7)-FIND(".",A7)

報告値の表示桁数をどのように処理するかを、もっと検証しないと
丸めの値が変わってくるので、質問者自身が判断してください。

No.4の回答者です。
No.5の回答者さんが指摘しているように、報告値で表示をする桁の
問題だと思います。

No.4の回答では、報告値に合わせるために強引な条件付き書式での
表示をしているので、計算値の0.995283を小数点一桁の1.0と表示
するようにしていますが、[下限値の桁数]での増減によって条件が
変わるので、ROUND関数での桁数の指定と条件付き書式での桁数の
指定がずれると丸める値の桁数が違うので1.00の表示になるのです。

> 数式の100を1000にしてみましたが
これについても、報告値をもとに下限値...続きを読む

Q日付の数字を取り出し、文字列として表示させたい

A2 A3・・・・・・・・・A8
週数    1 1 1 1 1 1 1 5 5
日付   4/1 4/2 4/3 4/4 4/5 4/6 4/7 ・・・・・・・・・4/29 4/30

上記のような表があります。
A1にA2からA8までで、月曜から始まる日にちの中で小さい日付、大きい日付を出して
下記のように表示させたく、数式を組んだのですがうまくいかず頭を悩ませております。
何卒、ご教授願います。

また、可能でしたら土日除いた場合と、土日含めた場合での表示の仕方をご教授願います。

1週目     5週目
1日~5日    29日~30日

A1=IF(COUNTIF($J$1:$AM$1,"1"),DAY(MIN($J$1:$AM$2)))&"日"&""&"~"&""&IF(COUNTIF($J$1:$AM$1,"1"),DAY(MAX($J$2:$AM$2)))&"日"&""

Aベストアンサー

難しく考え過ぎました。

言ってることは、
第何週
月日のカレンダー
の対応関係表があるので、
第何週ごとに
何日~何日
と表示したい

こういうことでしょ?

とりあえず、添付のサンプルで
どうでしょう?
=DAY(INDEX($B$2:$I$2,MATCH(5,$B$1:$I$1,0)))&"日~"&DAY(INDEX($B$2:$I$2,MATCH(5,$B$1:$I$1,1)))&"日"

MATCH関数で第何週かの最初と最後の
日付のある列を求める方法です。
上記は、第5週の日付を求めて、
DAYで日付の数字だけを取り出して
います。

土日抜きをやるには、最初か最後で
月の前後のテーブルを持つ必要が
あります。

また、
第何週を求めるには、
WEEKNUMという関数で
テーブルを作る必要が
あるでしょう。

Qエクセル リストと完全一致するセルに色をつける

シート1のA列とB列に
aaa ccc
bbb ggg
ccc kkk
ddd ooo
と言うリストがあって、A1〜A4はAチーム、B1〜B4まではBチームと名前を付けています
シート2にAチームのリスト4個が続いているものがあればセルを赤、Bチームのリスト4個が続いているものがあればセルを黄色に塗りたいです
AチームとBチームの中には同じ品番がある時もあります
条件付き書式で設定は出来るでしょうか?

Aベストアンサー

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル

 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4

 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5

 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

の4パターンについてそれぞれ調べれば良いだけ。

自分なら
 aaa-bbb-ccc-ddd
のようにシート1から文字列を作り、それが調べるセルで同じパターンになるかを調べます。
シート1はA5セルから、シート2はA11セルからデータが入力されているなら、

 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A11 & A12 & A13 & A14
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A12 & A13 & A14 & A15
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A13 & A14 & A15 & A16
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A14 & A15 & A16 & A17

という条件になる。
この4つのうちの一つでも条件を満たせばセルに赤色を付ければいい。
「Bチーム」についても同様にすればいいので、
この場合、8つの条件式を設定することになります。

面倒でもこの考え方ができていないと、ちょっと条件が変わっただけで対処できずに終わります。
冒頭で「並び順」について書きましたが、並び順がシート1のリストの通りでなくとも色を付けたい場合でも、この考え方は必要ということです。

・・・
ちなみに厄介なのが、どちらのチームにも「ccc」がいるというところかな。
これが無ければ違う方法でシンプルにできるんですけどねえ。

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付け...続きを読む

Q4142から653347と飛んでます。 これを4143からちゃんと並ぶにはどうすればいいでしょうか?

4142から653347と飛んでます。
これを4143からちゃんと並ぶにはどうすればいいでしょうか?

Aベストアンサー

これ、9から70に飛んでるよね。

①シート全体を選択
②どの行でもいいので右クリック
③再表示を選択

開いたかな?

Q正と負の数値が混在する中で、最大値を求める計算式を教えてください。

正の数値と負の数値が300数個ある中で、最大値(負の数値だけの場合もあります)を求めたいのですが、どなたかお教えいただけませんか?どうぞよろしくお願いいたします。

Aベストアンサー

確認なんですけど、-1と-100なら-1が最大でいいんですよね?

Qエクセルの使い方初心者です 数値が一定の数に満たないものを切り捨てて、残った数値の合計を出したいので

エクセルの使い方初心者です



数値が一定の数に満たないものを切り捨てて、残った数値の合計を出したいのですが最適な関数を教えてください

Aベストアンサー

こう言う事ですよね?

ファイル、
https://1drv.ms/x/s!AjviygfJDgV_3BbssbMqmfD5tQ8h

尚、
ファイルは 必ず、
1度 エクセルで、
開き、
ローカル保存してください、

ローカル保存で なければ、
意味が 無いです。


そうすれば、
閲覧も、編集も、
叶うものと 思います。

Qエクセル 指定範囲をCSV出力

エクセル2016で
下記マクロで指定範囲をCSVで出力するようにしているのですが
名前を付けて保存の画面が表示されたときに
ファイル名の欄に作業中のファイル名が表示されません。
エクセル2010では表示されてたのですが2016ではできなくなりました。
修正案を教えていただけないでしょうか。
よろしくお願いいたします。

Sub CSV()
Dim myRng As Range, myFileName As String
Set myRng = Range("A:A,B:B,C:C")
If myRng Is Nothing Then Exit Sub
myFileName = Application.GetSaveAsFilename(FileFilter:="CSVファイル (*.csv,*.csv")
If myFileName = "False" Then Exit Sub
Application.ScreenUpdating = False
With Worksheets.Add
myRng.Copy .Cells(1, 1)
.Move
End With
With ActiveWorkbook
.SaveAs Filename:=myFileName, FileFormat:=xlCSV
.Close False
End With
Application.ScreenUpdating = True
Set myRng = Nothing
End Sub

エクセル2016で
下記マクロで指定範囲をCSVで出力するようにしているのですが
名前を付けて保存の画面が表示されたときに
ファイル名の欄に作業中のファイル名が表示されません。
エクセル2010では表示されてたのですが2016ではできなくなりました。
修正案を教えていただけないでしょうか。
よろしくお願いいたします。

Sub CSV()
Dim myRng As Range, myFileName As String
Set myRng = Range("A:A,B:B,C:C")
If myRng Is Nothing Then Exit Sub
myFileName = Application.GetSaveAsFilename(F...続きを読む

Aベストアンサー

>作業中のファイル名が表示されませんでした。
>エクセル2010では問題ないので、やはりバグなのでしょうか?
>また何かお気付きされましたら教えてください。

ここの掲示板で、Excel 2013以降で再現可能なバグらしきものに出会うことが増えているように思います。SDI(Single Document Interface) せいなのでしょうか。Excel 2010 は、なかなか手放すことができません。

・Application.Dialogs(xlDialogSaveAs).Show , 6
これで表示は出るにしても、古いダイアログでファイル名を単独では取得できないので、あまりお勧めできません。

No.3のコードで、以下の部分にブレークポイントをつけて、bkNameの変数がどうなっているか調べることはできますか?
もし、ご存知でしたら、以下は無視してください。

ブレークポイントは、VBA Editor の上部のデバックメニューか、または、左端の該当する行の枠の部分をワンクリックすると、●が付きます。それで実行すると、その部分で止まります。(添付画像)

myFileName = Application.GetSaveAsFilename(bkName, "CSVファイル (*.csv),*.csv")

そこで、ローカルウィンドウ(表示メニューの中)で、変数のbkNameが取れているかどうかを調べます。それで確認したら、「F8} を押し、実際のダイアログを出します。

変数で取得して も、ダイアログでファイル名が出ないとしたら、別案のFileDialogを提示します。前回のものを入れ替えてみました。(以下は、一部、拡張子を取る部分が無駄があります。また、Excel2016以外では試していませんので、.FilterIndex =16 の部分が、下位バージョンで変わるはずです)

'//
Sub SampleCSV2()
 Dim myRng As Range
 Dim myFileName As String
 Dim bkName As String, i As Long
 bkName = ActiveWorkbook.Name
 i = InStrRev(bkName, ".")
 If i > 0 Then
  bkName = Left(bkName, i - 1) '拡張子を取る
 End If
 Set myRng = Range("A:C")
 If Application.CountA(myRng) = 0 Then Exit Sub
 'Application.ScreenUpdating = False 'ないほうが良いかもしれない。
 With Worksheets.Add
  myRng.Copy
  .Cells(1, 1).PasteSpecial (xlPasteValues) 'ボタンオブジェクトをコピーしないようにする。
  .Move 'シートの移動
 End With
 Application.CutCopyMode = False 'コピーモードを終了
 '===========入れ替えしました=======
 With Application.FileDialog(msoFileDialogSaveAs)
  .InitialFileName = bkName
  .FilterIndex = 16 '"*.csv"
  If .Show = -1 Then
   myFileName = .SelectedItems(1)
  Else
   ActiveWorkbook.Close False '途中でやめた時、ブックを捨てる
   Exit Sub
  End If
 End With
 '===========
 With ActiveWorkbook
  On Error Resume Next 'ファイル名上書きをキャンセル等した時のため
  .SaveAs Filename:=myFileName, FileFormat:=xlCSV
  On Error GoTo 0
  .Close False
 End With
 'Application.ScreenUpdating = True
 Set myRng = Nothing
End Sub
'//

画像はデバッグの検査

>作業中のファイル名が表示されませんでした。
>エクセル2010では問題ないので、やはりバグなのでしょうか?
>また何かお気付きされましたら教えてください。

ここの掲示板で、Excel 2013以降で再現可能なバグらしきものに出会うことが増えているように思います。SDI(Single Document Interface) せいなのでしょうか。Excel 2010 は、なかなか手放すことができません。

・Application.Dialogs(xlDialogSaveAs).Show , 6
これで表示は出るにしても、古いダイアログでファイル名を単独では取得できないので、あま...続きを読む

Q先般、下記のとおりご回答を頂きました。その節はありがとうございました。ところで、⑩が2つのセルに入る

先般、下記のとおりご回答を頂きました。その節はありがとうございました。ところで、⑩が2つのセルに入る場合はどのようになるのでしょうか。是非ともお教え頂きたくお願い致します。☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

No.1です。

↓の画像で説明します。

尚、大前提として⑩が入るのは1セルのみ!としています。

前回回答したように日付セルはシリアル値というのが前提なので、
画像では3行目をシリアル値にしています。
便宜上、G1セルに西暦年を、I1セルに月の数値を入力すると1か月のカレンダーになるようにしています。

G3セル(セルの表示形式はユーザー定義から d としています)に
=IF(MONTH(DATE($G1,$I1,COLUMN(A1)))=$I1,DATE($G1,$I1,COLUMN(A1)),"")

G4セルに
=TEXT(G3,"aaa")

という数式を入れG3・G4セルを範囲指定 → G4セルのフィルハンドルでAK列までコピー!

そしてSheet2のA列に祝日データ(シリアル値)を入力して、祝日の表を作っておきます。
最後にG14セルに
=IFERROR(IF(G3=WORKDAY(INDEX(3:3,MATCH("⑩",13:13,0)),2,Sheet2!$A:$A),"●",""),"")

という数式を入れフィルハンドルでAK列までコピーしています。

こんな感じではどうでしょうか?m(_ _)m

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

先般、下記のとおりご回答を頂きました。その節はありがとうございました。ところで、⑩が2つのセルに入る場合はどのようになるのでしょうか。是非ともお教え頂きたくお願い致します。☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

No.1です。

↓の画像で説明します。

尚、大前提として⑩が入るのは1セルのみ!としています。

前回回答したように日付セルはシリアル値というのが前提なので、
画像では3行目をシリアル値にしています。
便宜上、G1セルに西暦年を、I1セルに月の数値を入力すると1か月のカレンダーになるようにしています。

...続きを読む

Aベストアンサー

こんにちは!

https://oshiete.goo.ne.jp/qa/11060248.html
↑のサイトの件ですね。
前回投稿した者です。

前回アップした画像の配置通りだとします。

画像の配置では、G14・H14セルに「●」が入るコトはないので、
I14セルから以降に数式を入れます。

I14セルに
=IFERROR(IF(OR(WEEKDAY(I3,2)>5,COUNTIF(Sheet2!$A:$A,I3)),"",IF(INDEX($G13:G13,MATCH(WORKDAY(I3,-2,Sheet2!$A$1:$A$100),$G3:G3,0))="⑩","●","")),"")

という数式を入れフィルハンドルでAK14セルまでコピーしてみてください。

※ 前回、「祝日」データ範囲をSheet2のA列全体で検索していましたが、少し重いので
Sheet2のA1~A100セルとしています。m(_ _)m

Q特定の列範囲の中で最終列を指定

お世話になります。
以前質問した中で、別シートにデータを5列づつ
下に追加していくにはどうしたら良いかと言う質問をさせていただきました。

https://oshiete.goo.ne.jp/qa/11051972.html

上記回答で解決したのですが、
For j = 4 To .Cells(i, 1).End(xlToRight).Column Step unit
だと繰り返したくない列も動いてしまい、
繰り返す列範囲がD~W列のため
For j = 4 to 24 Step unit に変更しました。
すると今度は空白がある行も転記してしまい、困っています。

繰り返す範囲はD~W列まで5列毎に繰り返す
5列毎の最初のセルが空白か[0]であれば転記しない

どうぞよろしくお願いします。

Aベストアンサー

似ていますが、、、、

Sub Copies()
Const SRow = 3: Dim LRow As Long
Dim sht1 As Worksheet: Dim sht2 As Worksheet
Dim i As Long, j As Long, k As Long
Const UWide = 5
'===================
Set sht1 = Worksheets("Sheet1")
Set sht2 = Worksheets("Sheet2")
'===================
Application.ScreenUpdating = False
With sht1
LRow = .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(SRow, 1).Resize(1, 3 + UWide).Copy sht2.Cells(1, 1)
k = 2
For i = SRow + 1 To LRow
For j = 4 To 23 Step UWide
If WorksheetFunction.CountA(.Cells(i, j).Resize(1, UWide)) > 0 Then
.Cells(i, 1).Resize(1, 3).Copy sht2.Cells(k, 1)
.Cells(i, j).Resize(1, UWide).Copy sht2.Cells(k, 4)
k = k + 1
End If
Next j
Next i
End With
Application.ScreenUpdating = True
End Sub

似ていますが、、、、

Sub Copies()
Const SRow = 3: Dim LRow As Long
Dim sht1 As Worksheet: Dim sht2 As Worksheet
Dim i As Long, j As Long, k As Long
Const UWide = 5
'===================
Set sht1 = Worksheets("Sheet1")
Set sht2 = Worksheets("Sheet2")
'===================
Application.ScreenUpdating = False
With sht1
LRow = .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(SRow, 1).Resize(1, 3 + UWide).Copy sht2.Cells(1, 1)
k = 2
For i = SR...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング