• 締切済み

次の計算を教えて下さい

30246kikuの回答

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.8

関数を作成した方が処理しやすかと思います。 各入力されているのは文字列だとして、また、1ヶ月は30日固定解釈だとして A4に、=CalcDay(A1:A3) B4に、=CalcDay(B1:B3) A5に、=CalcDay(A4:B4) もしくは =CalcDay(A1:B3) とすると、見た目できたような気がすると思います。 以下記述を標準モジュールに転記します。 Public Function CalcDay(rng As Range) As String   Dim r As Range   Dim iAry() As Long   Dim vAry As Variant   Dim sS As String   Dim v As Variant   Dim i As Long, j As Long, k As Long   vAry = Array( _         Array("日", 1, 30, "日"), _         Array("月", 2, 12, "ヶ月"), _         Array("年", 3, 10000, "年") _       )   If (rng.Count < 2) Then Exit Function   ReDim iAry(3, rng.Count - 1)   ' 数字 → 数値解釈部分   k = 0   For Each r In rng     sS = StrConv(r.Value, vbNarrow)     For i = UBound(vAry) To 0 Step -1       If (Len(sS) = 0) Then Exit For       v = vAry(i)       j = InStr(sS, v(0))       If (j > 0) Then         iAry(v(1), k) = Val(sS)         sS = Mid(sS, j + 1)       End If     Next     k = k + 1   Next   ' 日、月、年 計算部分   CalcDay = ""   For Each v In vAry     j = v(1)     For i = 1 To UBound(iAry, 2)       iAry(j, 0) = iAry(j, 0) + iAry(j, i)     Next     iAry(j, 0) = iAry(j, 0) + iAry(j - 1, 1)     iAry(j, 1) = iAry(j, 0) \ v(2)     iAry(j, 0) = iAry(j, 0) - iAry(j, 1) * v(2)     If (iAry(j, 0) > 0) Then       CalcDay = iAry(j, 0) & v(3) & CalcDay     End If   Next '  CalcDay = StrConv(CalcDay, vbWide) ' 数字を全角にするならコメントを外す End Function ※ ソコソコ動くと思いますが、不都合あれば修正してください。

関連するQ&A

  • Excel 日数計算について

    Excelの日数計算について質問です。 H18.9.20(A2)からH19.2.22(B2)の期間を月数と残りの日数で表示すると =DATEDIF(A2,B2,"M")&"月" =DATEDIF(A2,B2,"MD")&"日" ここまでは何とかできましたが、 上記期間の1/2、及び1/3の月数と残日数を整数(端数は切捨て)で表示するにはどのような式が必要でしょうか? 月数は=DATEDIF(A2,B2,"M")で求めた月を1ヶ月30日で計算します。 よろしくご指導お願いします。

  • エクセルの計算式

    次のような場合の計算式を教えて下さい。 日数の計算です。 1、2011/03/15~2011/5/10     ※ここの1ヶ月と25日に計算式はわかります。 但し次のような場合  2,2011/06/20~2012/09/10     ※ここの1年の計算式は分かりますが、月数が14ヶ月となります。これを1年2ヶ月21日と計算する計算式を教えて下さい。 また、 1,2ヶ月15日 2,3ヶ月10日 3,1年2ヶ月21日 の期間があった場合  これを合計して 1年8ヶ月26日 と上記期間毎とそれを合計した合計期間を計算する方法を教えて下さい。 よろしくお願いします。

  • excelで合計日数の出し方を教えて下さい。

    はじめまして、 今まではdatedifを使って日数を求めることができました。 この場合 例、セルa1に開始日とb1終了日を入れればc1に合計日数が計算されました。 そこで新たにセルごとに年、月、日を入力して同じように合計日数が計算されるようにしたいのです。 例、セルa1に年(2009)、a2に月(3)、a3に日(6)=開始日   セルb1に年(2009)、b2に月(4)、b3に日(28)=終了日   セルc1に合計日数が計算(54)日数 となるように作りたいのですがどなたか教えて下さい。 宜しくお願いします。

  • エクセル 計算式について

    エクセルの計算式の質問です。(初歩的ですみません) 例えば 1月 15.000     2月 10.000     合計 25.000   とあって、1月をセルA1、2月をA2、合計をA3とした時に 1月と合計がわかっているので2月の所に「=A3-A1」といれています。3月が増えたときにも合計がわかっているので3月をA3とし、合計をA4として式を作ると「=A4-A1-A2」とするとA3がでると思うのですが 始めの時点でA2に式が入っているからか、うまく計算できません。 A2を値として認識させるとか、他にいい計算方法はありませんか? 

  • エクセル 繰り返し計算

    エクセルで毎月同じ計算をさせるときの方法を教えてください。 シートとしては、入力用、計算用、出力用とします。 入力用シートにA2セルに1月のデータ、B2セルに2月のデータ、C2・・・と12月まであります。 計算用シートのA2に入力されれば、G2、G3、G4のセルに計算結果が出ます。 出力用シートのA2、A3、A4に1月の結果、B2、B3、B4に2月の結果、・・ というように演算させたいのですが計算用シートの引用式、出力用シートの引用式は どの様に作成すればいいのでしょうか? 宜しくお願いします。

  • 日数を求める計算方法について

    日数を求める計算方法について A1:開始日入力、B1:終了日を入力しました。 単純にB1-A1にした結果の日数が開始日か終了日のどちらかが含まれず1日少ない日数です。 やり方が違うのでしょうかカウントの基本も合わせて教えて下さい。 開始日も終了日も両方カウントされるものだと理解してます。これ違いますか? 年/月/日で表示させています。

  • 3ヵ月後の日付を自動計算しようと思っているのですが、上手くいかなかった

    3ヵ月後の日付を自動計算しようと思っているのですが、上手くいかなかったのでご質問させていただきます。 3ヵ月後の日付をエクセルで自動的に計算させようと思って、いろいろ試行錯誤しているのですが、上手くいかなかったので、ここに質問させていただきました。よろしくお願いいたします。 で、単純に3ヵ月後を計算させようと思い、ExcelのWorkday関数等を利用して、以下のような式を考えました。 =WORKDAY(DATE(YEAR(A1),MONTH(A1)+3,DAY(A1)-1),1,B1:B38) ここで、セルA1には基準日を入力し、セルB1からB38には国民の祝日を入力しています。 で、これでほとんどの場合で上手くいったんですが、例えば明日8月31日を基準日とした場合、3ヵ月後を、基準日が月末なので3ヵ月後も月末で揃える格好で日付を指定したいと考えており、エクセル関数の組み合わせでとまってしまいました。 つまり8月31日を基準日としたような場合は、求める日付として11月30日(11月30日が土日や祝日の場合は、更にさかのぼって11月29日だったり、11月28日が求める日付)となるようにしたいと考えております。 どなたか、お知恵を拝借できればと思っております。よろしくお願いいたします。

  • excel の計算式にて…

    Excel 2003の計算式について教えてください。 合計 A-B-C 1日 A1-B1=C1  2日 A2-B2=C2 3日 A3-B3=C3   ……… 31日 A31-B31=C31 ちなみに A=目標 B=実績 C=対目標という簡単な計算式です。 A列は月初めに日々違う数字月末まで記入します。 B列は日々業務終了後入力します C列はA-Bの結果なので計算式で自動入力です 合計Aは月の合計でなく、その日までの合計を表示したいのです。 例えばB2に数字を入力すると合計A,B、Cそれぞれ、2日まで。B3だと3日までの累計の数字が自動で表示するように設定したいのです。 日々セルを指定し、計算式を変えると良いのですが、パソコンが苦手な人がいる為困っています。 なにか良い方法はないでしょうか??? わかる方教えてください。

  • エクセルで日数を計算したいんですが、

    エクセルで日数を計算したいんですが、 「月」と「日」を別のセルに入れています。 A1セル=月 B1セル=日 (例) A1セル B1セル 4月     10日 5月     13日 この4月10日から5月13日の間の日数を数えたいのですが セルが分かれていても計算することって可能ですか? 初歩的な質問で恐縮ですが教えて下さい! よろしくお願いします!

  • エクセルで残り日数を計算させる

    エクセルで関数を使用し10/1までの残り日数を表示させたいのですが どのような計算式を作成すれば宜しいでしょうか? A1に4月20日と記入した場合  A列に月日を記入しB列に残り日数を表示させたいです。   A列     B列 3 4月13日   7日 4 5 4月15日   5日     ・    ・     ・    ・  このようになる関数を教えて下さい。