• ベストアンサー

Mod関数?に関して

TALLY-HOの回答

  • TALLY-HO
  • ベストアンサー率29% (103/354)
回答No.2

#1です。 括弧のつけ方間違ってるし・・・すみません。 if ((iRowAnswer Mod 4) = 0) And (iRowAnswer > 0)

関連するQ&A

  • AccessでExcelでのMOD関数と同じ計算をさせるには

    いつもお世話になっております。 Accessで割り算の余りを計算させたいのですが、 ExcelのMOD関数って、使えませんよね・・・? 何かよい方法がありましたら、教えてください。 クエリでもVBAでも結構です。 よろしくお願いします!!

  • =MOD(ROW(),2)=0が一行置きになる意味

    初歩的な質問ですみません。 =MOD(ROW(),2)=0 について教えてください。 MODはあまりを返す関数、ROWが行を示す関数ということはわかるのですが、どうしてこの「=MOD(ROW(),2)=0」という数式が「一行置きに」を表すようになるのでしょうか? 「ROWの()で指定した範囲の行番号を2で割ったときの余りが0」ということだと思うのですが、これは「余りが0=偶数」だから「偶数行を指定する=一行置き」という理解であっていますか? また、( )の中を「,」で区切るのはどういう意味を持ちますか? 関数によって違うとも思いますが、「,」の前と後で、「前の数値に(を)後の数値を(で)」というかんじでしょうか?「IF」関数の場合「,」がいくつも続く時はどういう意味になりますか?

  • 2つの年月日の間の日数を求めるプログラム(PASCAL)

     大学の講義で、「2つの年月日を入力し、その年月日の間の日数を求めるプログラムを作成しなさい」という宿題が出たので、下のようにプログラムを作成したところ、…63(最後の行):parse error before '.'というエラーが出たのですが、なぜそのようなエラーが出るのかがわかりません。どう改善すべきか、アドバイスをお願いします。 program ex13(input,output); var year1,year2:1..9999; month1,month2:1..12; y1,y2:1..9999; m1,m2:1..12; d1,d2:1..31; n1,n2:1..9999999; begin writeln('question 13'); writeln('Please key the old date.'); write('Y: '); read(y1); write(' M: '); read(m1); write(' D: '); readln(d1); writeln('Please key the new date.'); write('Y: '); read(y2); write(' M: '); read(m2); write(' D: '); readln(d2); for year1:= 1 to y1 do begin if ((year1 mod 4 = 0) and not (year1 mod 100 = 0)) or (year1 mod 400 = 0) then n1:=n1+366 else n1:=n1+365 end; for month1:= 1 to m1 do begin case month1 of 3,5,7,8,10,12,1: n1:=n1+31; 4,6,9,11: n1:=n1+30; 2: if ((y1 mod 4 = 0) and not (y1 mod 100 = 0)) or (y1 mod 400 = 0) then n1:=n1+29 else n1:=n1+28 end; n1:=n1+d1; for year2:= 1 to y2 do begin if ((year2 mod 4 = 0) and not (year2 mod 100 = 0)) or (year2 mod 400 = 0) then n2:=n2+366 else n2:=n2+365 end; for month2:= 1 to m2 do begin case month2 of 3,5,7,8,10,12,1: n2:=n2+31; 4,6,9,11: n2:=n2+30; 2: if ((y2 mod 4 = 0) and not (y2 mod 100 = 0)) or (y2 mod 400 = 0) then n2:=n2+29 else n2:=n2+28 end; n2:=n2+d2; writeln('Ans.',n2-n1); end.

  • Mod(row)***

    =SUM(IF(MOD(ROW(A1:A20),4)=MOD(ROW(A3),4),A1:A20)) と、ネットに書いてある通り入力しても0になるか最後に,””を入れた場合、Valueになってしまいます。 理解しようと簡単な数字でやっているのですが計算ができません。 最初はMod、Row関数の意味から調べました。 昔、会社の技師が入力した関数を噛み砕こうとしています。 技師の入力したものは。範囲が200ほどあり、4行ごとの1行目の合計、別に2行目の合計を作成されています。 時々、おかしくなったから直してと言われることがあり、取り急ぎコピペで事なきを得ましたが、 理解したいと思っています。 ただ、実際に入ってる場所で同じ形で同じ関数を入れて作成すると、あるセルはちゃんと計算できるのですが、 あるセルだけは39,248,338分足された値が出てきます。 まったく同じ数式なのでなぜそうなるのかわかりません。 どなたかお詳しい方よろしくお願い致します。

  • 2次元配列を返す関数について

    VB6でExcelのMMULTのような関数が欲しかったので作って見ました。 関数内で配列をRedimで確保して戻り値として返すのですが、このような方法でメモリーリークなど発生する心配はないでしょうか? '行列の掛け算 Public Function mtxMult(ByRef mx1() As Double, ByRef mx2() As Double) As Double() Dim r, c, i, r1, c1, r2, c2 Dim res() As Double '行と列の最大値を得る r1 = UBound(mx1, 1) c1 = UBound(mx1, 2) r2 = UBound(mx2, 1) c2 = UBound(mx2, 2) If c1 <> r2 Then Exit Function ReDim res(0 To r1, 0 To c2) '答えの配列を確保 '各要素を掛ける For r = 0 To r1 For c = 0 To c2 res(r, c) = 0 For i = 0 To c1 res(r, c) = res(r, c) + mx1(r, i) * mx2(i, c) Next i Next c Next r mtxMult = res End Function '動作確認 Private Sub Command1_Click() Dim mx1(0 To 1, 0 To 1) As Double Dim mx2(0 To 1, 0 To 1) As Double Dim res() As Double Dim r As Integer List1.Clear mx1(0, 0) = 1 mx1(0, 1) = 2 mx1(1, 0) = 3 mx1(1, 1) = 4 mx2(0, 0) = 5 mx2(0, 1) = 6 mx2(1, 0) = 7 mx2(1, 1) = 8 res = mmult(mx1, mx2) For r = 0 To 1 List1.AddItem res(r, 0) & " , " & res(r, 1) Next r End Sub ところで、質問のソースコードのインデントを保持する方法はないでしょうか?

  • オイラーのφ関数を使った問題の証明です。

    Show that if n > 1, then the sum of the positive integers less than n and prime to it is n・φ(n)/2. [Hint: If m satisfies the conditions, so does n-m.] もし、n > 1ならば、nと互いに素であるnより小さい正の整数の和はnとφ(n)の積を2で割ったものになるということを示せ。 ヒント:mがその条件を満たすなら、n-mではどうか。 φはオイラーのφ関数のφです。 英文は実際の問題です。 訳は自分で解釈した文です。 この証明を教えてください。 ヒントの訳が少し自信がなく、証明方法がわかりません。 よろしくお願いします。

  • VBのユーザーフォームでの素数のカウント

    自分でVBのユーザーフォームを使って2から指定の数までの素数がいくつあるかを求めようと思ったのですが、個数の求め方がなかなかうまくいきません。 とりあえず自分ではここまで作ってみたのですが・・・ Private Sub CommandButton2_Click() N = Val(TextBox1) For k = 2 To N kaisuu = 0 For i = 2 To N - 1 amari = N Mod i If amari = 0 Then kaisuu = kaiuu + 1 Next i If kaisuu = 0 Then kosuu = kosuu + 1 If kosuu = 0 Then TextBox3 = "0" Else TextBox3 = kosuu.Val End If Next k End Sub 自分でも探しているのですがなかなか難しいです。 よろしくお願いいたします。

  • スカイリム mod トラブル

    modをインストールしようとすると Nexus Mod Manager was unable to start. It appears another inatance of Nexus Mod Manager is already running. If you were trying to doenload multiple files, wait for Nexus Mod Manager to start before clicking on a new file download. と表示されてダウンロードされません。 解決策が分かる方がいれば教えてください。お願いします。

  • 続・VBAでセルに値が入ったときにイベントを起こしたい

    http://oshiete1.goo.ne.jp/qa4650025.htmlで教えていただきありがとうございました。大変分かりやすい解説でした。 こういうことが出来るんだーとわかりもっと使いやすいように仕様を変えた方がいいと気づき新たに書き込んでみました。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long ' 変更したセルに値が入った場合条件成立 If Trim(Target.Value) <> "" Then ' 行番号が10以上65530以内のとき条件成立 If Target.Row >= 10 And Target.Row <= 65530 Then ' BCD列で、5の倍数の行のとき条件成立 If (Target.Column = 2) And (Target.Row Mod 5) = 0 Then If Target.Value <> "" Then For i = 0 To 4 Target.Copy Target.Offset(i, 10).PasteSpecial Paste:=xlPasteValues Next Worksheets("Sheet4").Range("A2:K6").Copy Target.Offset(5, -1) End If ElseIf (Target.Column = 3) And (Target.Row Mod 5) = 0 Then If Target.Value <> "" Then For i = 0 To 4 Target.Copy Target.Offset(i, 10).PasteSpecial Paste:=xlPasteValues Next End If ElseIf (Target.Column = 4) And (Target.Row Mod 5) = 0 Then If Target.Value <> "" Then For i = 0 To 4 Target.Copy Target.Offset(i, 10).PasteSpecial Paste:=xlPasteValues Next End If Else Exit Sub End If End If End If End Sub ここまでは何とか出来たのですが問題点があります・・・ ・複数セルを選択してDELすると実行時エラー13が出ます。(別の回答にあったやつですが・・・) ・別シートより範囲指定したセルをコピーして張り付けるときも出ます。 ・B列には6桁の整数値しか入らないようにしたいけど整数値限定は可能?・・・その整数値を貼り付ける際日付型へのフォーマットが難しい などあります。ヒントをいただけないでしょうか?

  • エクセルマクロで定義した関数が動きません

    以前にマクロの記述について教えて頂いた件の続きになります. ご指導頂いたとおりExcelマクロで複素数を扱う関数を下記HPから 標準モジュールにコピペしました.今度は正しくコピーできたと思いますが, 実行するとエラーになります. 標準の組込み関数を用いて「実数」の行列を計算すれば正しく 計算できますが,当然ながら「複素数」は計算できません. この「複素数」を扱う新しく定義した関数が動かない理由, 「End if に対するifブロックがありません」とか 計算結果が「#VALUE!」となってしまうのは何故でしょうか? マクロの記述内容はほとんど理解できないのですが, どなたか助けて頂けませんか! ちなみにエクセルは2016版です. http://www.geocities.jp/tomtomf/denki/AC2/ac2.htm http://www.geocities.jp/tomtomf/denki/AC1/ac1.htm 以下はコピー定義した「 IMMULT」関数と「 IMINVERS」関数のマクロです. Public Function IMMULT(a As Range, b As Range) As Variant Dim r1 As Integer, r2 As Integer, c1 As Integer, c2 As Integer, nn As Integer Dim r As Integer, c As Integer Dim cr As Integer, cc As Integer Dim n As Integer Dim mm() As Variant r1 = a.Rows.Count r2 = b.Rows.Count c1 = a.Columns.Count c2 = b.Columns.Count If (c1 = r2) Then nn = c1 Else Exit Function End If cr = r1 cc = c2 ReDim mm(1 To cr, 1 To cc) For r = 1 To cr For c = 1 To cc mm(r, c) = 0 For n = 1 To nn mm(r, c) = IMSUMa(mm(r, c), IMPRODUCTa(a.Cells(r, n), b.Cells(n, c))) Next Next Next IMMULT = mm End Function Public Function IMINVERS(a As Range) As Variant Dim n As Integer, n1 As Integer, n2 As Integer Dim r1 As Integer, r2 As Integer, c As Integer Dim max As Variant Dim i As Integer Dim m() As Variant Dim inm() As Variant Dim rr As Integer, cc As Integer Dim no As Integer, ex As Variant n1 = a.Rows.Count n2 = a.Columns.Count n = n1 ReDim inm(1 To n1, 1 To n2) For rr = 1 To n1 For cc = 1 To n2 If rr <> cc Then inm(rr, cc) = 0 Else inm(rr, cc) = 1 'End If Next Next ReDim m(1 To n1, 1 To n2) m = a If n1 <> n2 Then IMINVERS = False Exit Function End If For r1 = 1 To n max = m(r1, r1) no = r1 If r1 < n Then For i = r1 + 1 To n If IMABSa(m(i, r1)) > IMABSa(max) Then max = m(i, r1) no = i End If Next If (r1 <> no) Then For i = 1 To n ex = m(r1, i) m(r1, i) = m(no, i) m(no, i) = ex Debug.Print m(r1, i), m(no, i) ex = inm(r1, i) inm(r1, i) = inm(no, i) inm(no, i) = ex Next End If End If max = m(r1, r1) For i = 1 To n m(r1, i) = IMDIVa(m(r1, i), max) inm(r1, i) = IMDIVa(inm(r1, i), max) Next For r2 = 1 To n If r1 <> r2 Then max = m(r2, r1) For i = 1 To n m(r2, i) = IMSUBa(m(r2, i), IMPRODUCTa(m(r1, i), max)) inm(r2, i) = IMSUBa(inm(r2, i), IMPRODUCTa(inm(r1, i), max)) Next End If Next Next IMINVERS = inm End Function