[[20170823102227]] 『:を消したい』(ミント) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『:を消したい』(ミント)

エクセルの時間表示の:を消したい
エクセルの時間(9:00)の:の部分だけを消して900としたいのですが
出来るものならマクロで全て消すことはできませんか?
よろしくお願いします。

< 使用 Excel:Excel2003、使用 OS:WindowsVista >


 時刻で入力されているなら、表示形式を「hmm」にすれば:は消えますけど、
 そういうことではなくて、データ自体を変えたいのですか?
(コナミ) 2017/08/23(水) 10:32

hmmで行くと実際には9:00と残つてしまいます
データーを書き換えて900としたいのですが出来ませんよね?
(ミント) 2017/08/23(水) 10:49

 入力されているのが時刻データではなく文字列なので有れば置換で検索する文字に「:」、置換後の文字に何も指定せず
 すべて置換ではどうか。
(ねむねむ) 2017/08/23(水) 11:05

 シリアル値
 をネット検索し、勉強してみてください。
(カリーニン) 2017/08/23(水) 11:22

 シリアル値だったとして、ねむねむさんが書かれている回答の応用でTEXT関数で一度文字列化して
 しまうという手もありますが、表示形式で「hmm」にした後、範囲を選択しコピー
 →クリップボードを立ち上げてすべて貼り付け→表示形式を「標準」に

 という手も。マクロじゃないですけど。
(コナミ) 2017/08/23(水) 16:01

こんばんわ

表示形式で「hmm」にした後、範囲を選択しコピー

 →クリップボードを立ち上げてすべて貼り付け→表示形式を「標準」に
やってみましたが数値化されてしまい900となりませんでした
(ミント) 2017/08/23(水) 20:20

 >数値化されて

 数値化ってどういう状況ですか?
 どんな数値になったのでしょうか?
 別の場所に貼り付けてしまったりはしてませんか?
(コナミ) 2017/08/23(水) 20:43

0.291666
こんな数値になってしまいます
(ちゃた) 2017/08/23(水) 21:48

文字列に変換して強引にそれっぽく見せる(セルの書式設定に影響されない?)
Sub test()
    With Range("A1")
        .Value = "'" & Replace(.Text, ":", "")
    End With
End Sub

変数にいったん仮置きし、セルの書式を標準にもどしてから、値を入れなおす。
(数値になってしまう)
Sub test2()

    Dim v As Variant

    With Range("A1")
        v = Format(.Value, "hmm")
        .NumberFormatLocal = "G/標準"
        .Value = v
    End With
End Sub

他のアプローチもありそうですね^^
でも今回の場合は文字列として扱いたいのかな?

(まっつわん) 2017/08/23(水) 21:54


 シリアル値ですね。それは普通に貼りつけた状態です。
 手順は全て書いてますし私が試したときは9:00→900に
 なりましたから、どこで違うことになったのかは
 こちらではわかりません。
 できないなら他の方法を試された方がいいのでは?

 900という数値になるのはいいんですよね?
 シリアル値がまずいだけで。それとも900という文字列がいいんですか?
 そういったことはきちんと書いた方がいいですよ。

(コナミ) 2017/08/23(水) 22:02


説明が難しくて
確かに900になるのですが偽りの900で
数値を入力した900にしたいのです
このやり方ですと他にコピーすると
また元にもどった9:00になってしまいます。

(ちゃた) 2017/08/23(水) 23:12


名前が違いますが携帯電話から返信しています。
(ちゃた) 2017/08/23(水) 23:17

 うん、多分何かやり方が違うんでしょう。
 再度書きますが、それは普通のコピペになってます。
 ちゃんとやれば直接900と入れたのと同じになります。

 他の方の回答を待った方がいいですね。
(コナミ) 2017/08/24(木) 05:53

なるのですかー
そもそもクリップボード
はどんなコピーなんですか?
左側にクリップボードの一覧
が出るには出るのですが?
(ちゃた) 2017/08/24(木) 06:22

 コナミさんがおっしゃっているのは「クリップボードの一覧 の上にでる『すべて貼り付け』ボタンを押す」
 ってことだけど、このボタン押してる?

 どーしてもできないなら、

 表示形式で「hmm」にした後、範囲を選択しコピー 
 →Wordを立ち上げて普通にペースト
  Wordでペーストしたものをコピー
  Excelにペースト

 という手もあるよ。手順増えるし罫線とかはうまくいかないこともあるけどね。

(1111) 2017/08/24(木) 08:53


そもそもどういう使い方をしたいんですか?

見かけだけでなく数値にしたいのなら計算に使いたいんでしょうが(時給換算とか?)。
ただ数値化しただけでは10の位が6進数ですので単純に計算(なんらかの係数との乗算・除算。時間同士ならマイナスが生じない加算・減算は問題なし)に使うことはできません。
時間同士の加算・減算後のなんらかの値と乗算・除算する段階で

=(DAY(A1)*24+HOUR(A1))+(MINUTE(A1)/60)

とかで変換すればよいのでは?
まぁ用法が説明なされていませんのであくまで推測ですが。
(チック) 2017/08/24(木) 09:16


 いや、ぶっちゃけTEXT関数使って最後に*1した方が手っ取り早いとは思うんですよね。
 クリップボード案はこんなのもありますよ、程度に出しただけなので。
 私がクリップボード好きだから。
(コナミ) 2017/08/24(木) 09:28

だからTEXT関数のみならず単純変換でいいのかはその数値の用法によりますよねって言ってるんですが・・・

お詳しいならご教授いただきたいんですが、snipping toolなんかで切り取った画像や、excelシート上のグループ化した描画オブジェクト・テキストボックスを含んだ画像をシート上にコピペしようとすると、動作停止してexcel再起動になることが結構な頻度であるんですが、原因もしくは要因になりそうなことってわかります?解決はしてるんですが釈然としなくて・・・
(チック) 2017/08/24(木) 10:07


あぁ、わかった。。。。

キーボードで

900

と打ったら9:00の意味にしたいということですね。

表示も900でありたいと。。。

こんな感じですかね?

数式はもっとスマートになると思いますが思いつかなかった orz

あとはチェンジイベントで実行すればいいと思います。

Sub test03()

    With Range("A1")
        .Value = Evaluate("TIME(LEFT(" & .Value & ",LEN(" & .Value & ")-2),RIGHT(" & .Value & ",2),0)")
    End With
End Sub

時間が無いのでこの辺で m(_ _)m
(まっつわん) 2017/08/24(木) 18:52


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.