質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

880閲覧

VBA 文字列と認識されてしまっているセルを数字に変換したい

cherishlieben

総合スコア17

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

1グッド

0クリップ

投稿2023/03/16 02:22

編集2023/03/16 02:23

文字列として認識されているセル(時刻表示)を、数字として認識させたいのですが、どの様なコードで実現出来るかお聞き出来ますでしょうか。

実現したいこと

  • 10:10:15と記載されたセルの値を関数を用いて時刻として計算に使用したいです。そのため、10時10分15秒と認識させられる様、VBAを用いて該当セル(A9〜A列の文字が書いてある最下行まで)を、文字列から数字に変換したいです。

(表示方法はそのままで良い)

前提

ExcelのVALUE関数を使用しても、
時刻として見なされない(=関数によってその値を用いて時刻の計算が出来ない)様でした。

因みに、Excelで該当セルの値を用いて時刻の計算をする為に、文字列から数字に変換を行いたいです。
→(計算例)該当セルの時刻+15分=B2セルの時刻より遅いか早いかを判断する

該当のソースコード

VBA

1※それ以前のコードで既に、A列の最下行を取得する変数LineEndを定義しております。
ma1982を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cherishlieben

2023/03/16 02:53

文字列として認識されているセル(時刻表示)を、数字として認識させたいのですが、どの様なコードで実現出来るかお聞き出来ますでしょうか。 こちらがご質問したい内容になります。
otn

2023/03/16 03:37

> ExcelのVALUE関数を使用しても、時刻として見なされない(=関数によってその値を用いて時刻の計算が出来ない)様でした。 具体的なファクトを提示しましょう。 =VALUE("10:10:15") と、文字列を引数にVALUE関数をセルに入力すると、0.423784722 という数値になります。 これに、VALUE("0:15") を加算して、TEXT(和,"hh:mm:ss") をすると 10:25:15 という文字列になります。
cherishlieben

2023/03/16 09:54

ご教示ありがとうございました。 承知致しました。
guest

回答3

0

回答ではありません。確認です。
時刻は、どちらの形式で登録されていますか。
1.文字列の形式
書式設定の表示形式が文字列(左詰めとなる)
イメージ説明

2.シリアル時刻形式
書式設定の表示形式が時刻(右詰めとなる)
イメージ説明
どちらかにより、処理の方法が異なります。

投稿2023/03/16 13:38

編集2023/03/16 13:56
tatsu99

総合スコア5438

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

10:15:15 とかかれたセルはシリアル時刻として登録されているはずです。
セルの書式設定で h:mm:ss になっているはずです。
15分を加算するにはTimeValue関数を使います。
以下は、A9~A12の各セルの値に15分を加算した結果が、B2セルの値(10:15:15)と比較して、
その結果をB9~B12に表示するマクロです。
等しければ、=
B2の値より大きければ、>
B2の値より大きければ、<
を表示します。

VBA

1Public Sub test() 2 Dim wrow As Long 3 For wrow = 9 To 12 4 If Cells(wrow, 1).Value + TimeValue("0:15:0") = Cells(2, 2).Value Then 5 Cells(wrow, 2).Value = "=" 6 End If 7 If Cells(wrow, 1).Value + TimeValue("0:15:0") > Cells(2, 2).Value Then 8 Cells(wrow, 2).Value = ">" 9 End If 10 If Cells(wrow, 1).Value + TimeValue("0:15:0") < Cells(2, 2).Value Then 11 Cells(wrow, 2).Value = "<" 12 End If 13 Next 14End Sub 15

実行結果
イメージ説明

投稿2023/03/16 02:54

tatsu99

総合スコア5438

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Splitの後にJoinしたらどうでしょう

投稿2023/03/16 02:52

ma1982

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問