エクセル自動計算の方法とVBA、関数の有効活用

このQ&Aのポイント
  • エクセルでの自動計算について説明します。C列の=B2-A2で残りの時間を計算する方法について解説します。
  • エクセルでの自動計算をするためには関数やVBAを利用することができます。具体的な手順や方法について説明します。
  • エクセルで表記された日時データを利用し、残りの時間を求める方法について解説します。関数やVBAを使って効率的に計算することができます。
回答を見る
  • ベストアンサー

エクセルの自動計算 VBA、関数可

エクセルでお伺いします。 A | B | C 03-06-2008 18:00 | 09-06-2008 12:00 | =B2-A2 ※Aは2008年6月3日18:00 の意味です。 ※Bは2008年6月9日12:00 の意味です。 上記のような状態でC列の=B2-A2 に 残りの時間が計算 する事は可能でしょうか? Cの値は24時間=1で求め、上記の場合だと5.75になります。 経緯として、A,Bはとあるツールから一遍にコピーする為 こういった表記になります。 どうしても残りの時間を求めたいので、わかる方が入れば 関数、VBAで結構ですので、教えて頂ければと思います。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#204879
noname#204879
回答No.4

[ANo.3この回答へのお礼]に対するコメント、 》 差し引きの時間がでました!! 「時間」ですって?どのように出たか具体的に仰るべきです。 》 24時間=1.0形式で出す事は可能でしょうか? 「差し引きの時間」が出たセルの[書式]を“標準”に設定しましたか? 5.75 と表示されるはずです。

bwallace00
質問者

お礼

大変ありがとうございました。 ご指摘頂いた書式の設定で表示する事ができました。 初歩的なミスで申し訳ございませんでした。

その他の回答 (4)

  • keirika
  • ベストアンサー率42% (279/658)
回答No.5

C1セルの式はB1-A1のままで、書式設定を[h]:mmにしてみてはどうでしょうか。

noname#204879
noname#204879
回答No.3

=(MID(B1,7,4)&"/"&MID(B1,4,2)&"/"&MID(B1,1,2)&" "&MID(B1,12,5))-(MID(A1,7,4)&"/"&MID(A1,4,2)&"/"&MID(A1,1,2)&" "&MID(A1,12,5))

bwallace00
質問者

お礼

差し引きの時間がでました!! ありがとうございます。 すいませんが、24時間=1.0形式で出す事は可能でしょうか? 今回のだと 03-06-2008 18:00 | 09-06-2008 12:00   上記のケースであれば、5.75になります。 難しいようであれば、今回の通常の差し引きで結構です。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

日付の形式が yyyy-mm-dd なら大丈夫なようです。 dd-mm-yyyyではエラーになりますね。 関数で対処する場合 =DATE(MID(B2,7,4)-MID(A2,7,4),MID(B2,4,2)-MID(A2,4,2),MID(B2,1,2)-MID(A2,1,2))+MID(B2,12,5)-MID(A2,12,5)

bwallace00
質問者

補足

#NUM!のエラーがでます。。。 表示形式に指定があるんでしょうか? いろいろ試しましたが、エラー回避ならないです。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

他のアプリの出力と言うことだと、たぶん文字列で持ち込んでいるん じゃないかと思います。だとすると「左から何文字目から何文字目まで が"年"を表す」と決まっている筈ですので、多少かっこは悪いですが、 素直に文字列をDATE関数などで時刻シリアルに変換すれば良いかと。 =DATE(MID(A1,7,4),MID(A1,4,2),LEFT(A1,2))+TIMEVALUE(RIGHT(A1,5)) 日付はExcelの標準書式でないので=DATEVALUE()関数は使えませんが、 時刻は標準書式なので=TIMEVALUE()関数がラクです。

bwallace00
質問者

補足

ありがとうございます。 こちらの関数ですが、B1-A1の時刻ではなく、A1のみの時刻がでます。 しかしながら勉強になりました。

関連するQ&A

  • エクセル VBAで関数

    こんばんわ。いつもお世話になっております。 エクセルでデータを加工しているのですが、関数で加工するととても遅くなってしまうので なんとかVBAで作業できないかと模索中です。 Sheet1の、A列=取引先 B列=支店名 となっており、それが3,000行ほどあります。 Sheet2も、A列=取引先 B列=支店名 となっており、 Sheet1のC列に、Sheet1のA列のB列という支店が、Sheet2にあるか確認したいのです。 現在は、Sheet1のC列に、SUMPRODUCT関数でカウントさせているのですが、大変重いです。 ほかのSheetで、VBAを使って関数のような働きをさせている部分があります(前任者作成) そのように、なんとかVBAを使用したいのですが、なかなかうまく出来ません・・・。 どうか、お力を貸してください!! うまく説明できなくて、わかりづらかったらごめんなさい。 よろしくお願いいたします。

  • Excelの関数またはVBAについて

    A1-B1の結果がC1に出るような表を作りました。C1の結果が自動でA1に表示され、ループするようにしたいのですが VBAになるのでしょうか?VBAは全くわからないので、できれば列を挿入するなどして関数で出来たら。。。と思ってます。すいませんが、ご教授ください。お願いします

  • エクセルVBA及び関数

    初心者です。お教えお願いします エクセル2003です 空白行及び0をなくしたいのですが(C列を入力された時点で自動でE列のようにしたい) 関数の場合及びVBAのシートコードを両方教えていただけないでしょうか VBAのコードは勉強の為です Sheet1    A    B     C     D     E     F 16          文字A        文字A 17          文字B        文字B 18            0         文字C 19          文字C        文字D 20            0         文字E 21          文字D        文字F      22      23          文字E 24 25          文字F 文字はC16~C80まで入っております B16~E80までのセルのみで行いたいのですが 他の場所は関数やグラフ等がすでに入ってますのでいじりたくありません E16~をフォームのコンボボックスのリストにしようと思ってます よろしくお願いましす

  • エクセル関数とVBA関数で意味が違うのは多いのか

    エクセル関数とVBA関数で意味が違うのは多いのでしょうか? セルA1に「A」と入れ、 B1に「=ASC(A1)」と入れると B1は「A」になります。(半角) VBE画面で Sub test() Debug.Print Asc("A") End Sub を実行すると、-32160 になります。 ヘルプより エクセルでは=全角 (2 バイト) の文字を半角 (1 バイト) の文字に変換します。 VBAでは=指定した文字列内にある先頭の文字の文字コードを返す変換関数です。 となっていますが 同じ関数でも全く意味違うのでびっくりしています。 こういうことは頻繁にあるのでしょうか? (VBAのASC関数のかわりのエクセル関数は、CODE関数でした。)

  • エクセル 関数を自動的に入力するVBAで困っています

    VBA初心者です。 エクセルの入力シートで行ごとにデータを下記のように入力しています。      A      B       C 1   日付    品番     商品 2   10/25    10     りんご 3   10/26    20     みかん 4 5 6 2行目から順にデータを入力すると自動的にC列にVBAで VLOOKUP関数をセットして商品を検索したいのですが 上手くできませんでした。 教えてください。よろしくお願いします。

  • エクセルVBAでのまとめ計算

     初めまして、よろしくお願いします。 データーで    A      B     C     D      E ・・・ 1              5     7      2 2              3     7      0 3 4              6     3      6 5              2     8      3 6              0     3      4 ・     ・      ・      ・      ・ ・     ・      ・      ・      ・ 100             3     4      5 という表がありますA列には(C列の値/(D列以降の平均値))をB列には(C列の値-(D列以降の平均値))を表示させたいと思います。たまに3行のような空白の行があります。関数式ではなく、VBAで解る方、よろしくお願いします。

  • EXCEL 2010 VBAまたは関数について

    こんにちは 初投稿です。 早速ですが、VBAまたは関数について質問させて頂きたいのですが・・・ 一つのセルに複数の数字と文字列がセルのE1混ざっている場合, (12345abc678cdef9ghijk)と入っている場合 にこの例で行くとセルのA1に12345セルB1に678セルC1に9というように数字で表示させたいのです が、最初関数で A1=VALUE(MID(E1,1,5)) B1=VALUE(MID(E1,9,3)) C1=VALUE(MID(E1,16,1)) と言う形で数字だけ抜き出していたのですが これだと数字の桁数が違ってくる(※正し文字列の長さは一緒 数字だけが桁が違ってきます) と表示されなくなってしまうため、 出来れば関数をいじらなくても表示されるようにしたいのです。 VBAもしくは関数でこの問題を解決出来る方がいらっしゃるなら どうぞよろしくお願い致します。 長文失礼致しました。 | A | B | C | D | E | ------------------------------------------------ 1 | 12345 | 678 | 9 | | 12345abc678cdef9ghijk | 2 | | | | | |

  • EXCEL VBA

    はじめまして。ExcelのVBAについて質問させて頂きます。 - A-B-C            1 0 あ        2 0 い        3 1 う           4 1 え           5 1 お   上記のようなデータに対して、A列の値が1の場合、B列の値をC列へコピー して、B列をゼロにする。A列の値が0の場合は、そのまま。 (結果) - A-B-C            1 0 あ        2 0 い        3 1 0  う           4 1 0 え           5 1 0 お   といったようにVBAを作成したいのですが、なにぶん初心者なもので、 どのように記述すればよいのかわかりません。 よろしくお願いいたします。

  • エクセルの関数について教えていただけたらうれしいです。

    エクセルの関数について教えていただけたらうれしいです。 例> A B C 01 70 1 01 20 01 10 02 20 02 50 1 02 30 03 80 1 03 20 04 60 1 04 20 04 20 上記のように、A列内に同じ文字(数字など)がある場合、それぞれのB列にある値の最大値がある、C列へ「1」などのフラグが立つような関数はどうしたらよいのでしょう? 説明が下手ですみません。 A列の「01」が3つあるうち、B列の「70」が最大値なので、C列に「1」が付く。 A列の「02」が3つあるうち、B列の「50」が最大値なので、C列に「1」が付く。 A列の「03」が2つあるうち、B列の「80」が最大値なので、C列に「1」が付く。 A列の「04」が3つあるうち、B列の「60」が最大値なので、C列に「1」が付く。 このようになるようにC列に入れる関数が知りたいです。 よろしくお願いいたします。

  • エクセル2002VBAで合計を計算したい

    単純なことなのかもしれませんが… エクセルVBAでセルの足し算をしたいのです。 セルA1に合計を出したくて A15+A25+A35…と、A155までの足し算の結果をA1に出したいのです。 また、A2のセルにはA16+A26+A36… A3にもA17+A27+A37…と。 そしてB1,B2,B3にも、B15+B25+B35…B16+B26+B37…B17+B27+B37とそれぞれ。 C列にも同様にです。 A1からC3までに、同じような演算の結果が出るということです。 これをエクセルのSUM関数を使わずに、VBAの記述で実現したいのですが・・・ どういう記述の仕方があるでしょうか?

専門家に質問してみよう