ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの複数セルの同じ場所に「:」を挿入したい

  • mixiチェック
  • このエントリーをはてなブックマークに追加
 現状で、セルには時刻を表わす3桁と4桁の数字が入っています(↑をご参照ください)。
 これを一括で

900→9:00
1115→11:15

 のようにするにはどうするばよいのでしょうか。
 Right関数などを使う力業は思いつくのですが、数がかなりあるので、できれば表示形式(ユーザー定義?)で処理したいと考えています。
 下記などを見ると、先頭や末尾に挿入するのは簡単そうなのですが、「末尾から3字目」となると、お手上げです。
http://www.jpita.or.jp/hpv3/ziten/mokutekibetu/ex_52.html

 よろしくお願いします。

コメント(13)

こんにちは。
表示形式を、 0":"00 とするのはいかがでしょう。
>1 aozoramame さん

 ありがとうございます。
 そういうことなんですね。

 我ながら修業が足りません。
書式を「0":"00」に変えただけでは、Excelは時間だと認識してくれないので

=TEXT(A1,"00!:00")*1
=TIME(VALUE(LEFT(A1,LEN(A1)-2)),VALUE(RIGHT(A1,2)),0)

などとして、書式を時刻のものにするほうが私は良いと思います
>3 マリ男 さん

 いつも勉強させていただいています。
 そういうやり方もあるんですね。

 前者は怪しげな数字になりました。
 後者は「9:00 AM」のような形に(泣)。
=VALUE(TEXT(A2,"00!:00"))

とでもしておくと、シリアル値になるから後で計算に使うことも出来ます
>前者は怪しげな数字になりました。
>後者は「9:00 AM」のような形に(泣)。

書式設定は「h:mm」になっていますか?

時刻データというものは、シリアル値(数値)ですから
数字になって当然です
「9:00 AM」は書式が「h:mm AM/PM」になっているからでは?
>3 マリ男 さん

 失礼しました。
 前者は表示形式を「時刻」にすると「4:45:00」になりました。
>6 マリ男 さん

 コメント[6]とコメント[7]が前後してしまいました。

>「9:00 AM」は書式が「h:mm AM/PM」になっているからでは? 
 ご指摘にとおりです。
 いつ「h:mm AM/PM」にしたのかは自覚がありませんが……。

>5 Hal (ねこ使い) さん
 コメントありがとうございます。

>=VALUE(TEXT(A2,"00!:00"))
 当方が確認した限りでは、[3]で教えていただいた〈=TEXT(A1,"00!:00")*1 〉とほぼ同じ結果のなっています。
 関数の意味に関してはほとんど理解できていませんorz。
>>8
表示形式は「中身はそのままで見た目だけを変えるもの」ですから、
表示形式の設定だけでは元々の「900」などという数値のままです。
そして、時間もまた実際は小数で見た目だけが時間に見えているだけのものなので、
実際の姿を比較すると「900」と「0.375(9:00の実際の数値)」なので全く別物ですよね?

ですから、単純に時間に見せかけるだけであれば表示形式で解決できるのですが、
その変身させたセルを時間としてどこかで利用しようとすると、中身が違うのでおかしな結果になります。

そこで、関数を使って実際に「900」を「0.375」にしちゃおう、というのが上ででているような式です。

=TEXT(A1,"00!:00")*1
=TIME(LEFT(A1,LEN(A1)-2),RIGHT(A1,2),0)
=VALUE(TEXT(A2,"00!:00"))

といった式がでていますが、TEXT関数は「表示形式を設定した『文字列』にする」関数ですから、
そのままでは文字になってしまい、やはり計算などに使うことができません。
それを数値に戻しているのがVALUE関数(文字列化した数字を数値に変換する)や
*1という処理(文字になっている数値でも四則演算した結果は数値になるという性質を利用)です。

TIME関数は「見たまんまの数値」から時刻という「見た目と中身が違う数値」を作る関数で、
TIME(時,分,秒)と指定します。LEN関数は文字列の長さ(文字数)を求める関数で、
LEFT関数で「時」にあたる部分を抜き出すために、全体の文字数-「分」にあたる文字数を
求めるために利用しています。

LEFT関数やRIGHT関数についてはご存知のようですが、これらの関数で抜き出された数字は
数値ではなく文字列扱いになってしまうため、元々の式ではVALUE関数で数値化しています。
(ただ、ここでは省略可能なので省略して説明しています)

また、関数では中身そのものである「値」を変えることはできても、見た目である「表示形式」を
変えることができないので、見た目しか変えることができない「表示形式」を別途設定する必要があります。

「中身」と「見た目」の違いをはっきり意識できることは、エクセルを使いこなす上で結構大切なことですよね。


チョット横道にそれちゃいますが、ご参考程度に…。

よくあるのは、表示の形式を整数にして「見た目」は整数。でも「中身」は小数点以下の値が含まれていたりして。結果的に「見た目」には「1+1で2」になるはずのものが2にならない。「1+1が1」なんて例があります。

セルに表示されている内容の「中身」は、大体の場合数式バーに表示されています。あるいは、そのセルをダブルクリックした時に表示されます。

「1+1が1」という例であれば、セル上で「1」と見えている中身は、数式バーなどでは「0.5」とか表示されているはずです。


ただし、日付・時刻のデータだと、その中身は数式バーなどには表示されません。ごく自然に「2011/10/30 12:00:00」と、どこかのセルに入力すると、数式バーなどにもその通りに表示されます。

「2011/10/30 12:00:00」と見えているものの「中身」とは「40846.5」という数値です。「40846」の意味なのですが、1900年1月1日を「1」として、一日分を「1」という整数値にした時、「40846」番目にあたる日が2011年10月30日、と言う意味なんだそうです。実際に数えてみたことはありませんが。

で、小数点以下の「.5」とは一日の半分、つまりそれはお昼の12時のこと。


当たり前すぎる例ですが、数式を入力すると、表示されるのは計算の結果。でも「中身」数式。


「中身」と「見た目」、これらは同じとは限りません。むしろ違う方が多いぐらいなのかも。
>9 伊蔵 さん

 詳細な説明ありがとうございます。
 上記の3つの式の意味がなんとなくわかりました。自分で使いこなせるようになるのはたいへんでしょうが……(泣)。
 同じような処理をするのにも、考え方しだいでいろいろな方法があるんですね。


>10 八神かかし さん

 コメントありがとうございます。

>「中身」と「見た目」、これらは同じとは限りません。むしろ違う方が多いぐらいなのかも。
 よく覚えておきます。
=TIME(LEFT(TEXT(A1,"0000"),2),RIGHT(TEXT(A1,"0000"),2),0)
=TIME(INT(A1/100),MOD(A1,100),0)
=INT(A1/100)/24+(A1-(INT(A1/100)*100))/60/24

こんな式でも出来ますね
関数ではないのですが・・・
私がよく使っている9:00の簡単な入力方法は「単語の登録」で事前に9と入力すると
9:00と表示されるように登録しています。
もしくは、すでに3ケタ、4ケタで900など入力してあるのであれば、「すべて置換」で900→9:00に一機に変換するとか。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。