いつも大変お世話になっております。
Excel上に入力されている時刻が、9時以降であれば、という条件分岐を設定したいのですが、うまく反応しません。
セルには、「9:18:33」という文字列が入力されています。
条件は、「Excel.Sheet(対象年月日).Cell(“F” + count.ToString)>=“9:00:00”」としております。
お気づきの点ありましたらご教授ください。
いつも大変お世話になっております。
Excel上に入力されている時刻が、9時以降であれば、という条件分岐を設定したいのですが、うまく反応しません。
セルには、「9:18:33」という文字列が入力されています。
条件は、「Excel.Sheet(対象年月日).Cell(“F” + count.ToString)>=“9:00:00”」としております。
お気づきの点ありましたらご教授ください。
こんにちは
以下条件式いかがでしょうか?
DateTime.ParseExact(Excel.Sheet(対象年月日).Cell("F" + count.ToString).ToString,"H:m:s",System.Globalization.CultureInfo.InvariantCulture).Hour>=9
Please try the below…also just to check better print the value you are reqding and check the format of the value acter you read from excel
DateTime.ParseExact(Excel.Sheet("SheetName").Cell("CellValue").StringValue,"H:mm:ss",System.Globalization.CultureInfo.InvariantCulture) > DateTime.ParseExact("9:00:00","H:mm:ss",System.Globalization.CultureInfo.InvariantCulture)
Cheers
Hi @kiki1
Try this:
isAfter9 = DateTime.ParseExact(yourDataTable.Rows(rowIndex)("ColumnName").ToString, "H:mm:ss", CultureInfo.InvariantCulture).TimeOfDay > new TimeSpan(9, 0, 0)
isAfter9 is a variable of DataType System.Boolean
=> Use an If condition in below way
If isAfter9
Then
' Your activities for the condition being true
Else
' Your activities for the condition being false
End If
Hope it helps
こんにちは。
まずは左辺が、比較できる数値や日付ではなく文字列として取得されているのを何とかしましょう。
CDate(Excel.Sheet(対象年月日).Cell(“F” + count.ToString))
これで左辺はString型→DateTime型に変換されます。
次に、日付型の比較はCompareメソッドを使うのでこれを活用しましょう。
Compare(日付1,日付2)
※日付1が日付2より未来日であれば「0より大きい」を返す
※日付1が日付2より過去日であれば「0より小さい」を返す。
なので、条件分岐の条件式を以下のようにすると上手くいかないでしょうか。
Compare(CDate(Excel.Sheet(対象年月日).Cell(“F” + count.ToString),9:00:00)>0
最後の9:00:00が本日日付に変換されてしまう可能性がありますが、取得したセル値もその瞬間だけ本日日付として見られるので問題は無いと思います。気持ち悪ければ他の案を採用ください。
すみません。9:00:00の部分は先にCDate(“09:00:00”)として何らかの日付型変数に格納する必要があるかもしれません……。
解決できました。
ありがとうございます ![]()
他の手段で解決いたしました。
ご丁寧にありがとうございました ![]()
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.