Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1130 / 13645 ツリー ←次へ | 前へ→

【76116】階段状の連続計算 トキノハジメ 14/9/29(月) 10:12 質問[未読]
【76117】Re:階段状の連続計算 独覚 14/9/29(月) 14:23 発言[未読]
【76118】Re:階段状の連続計算 トキノハジメ 14/9/29(月) 14:39 質問[未読]
【76119】Re:階段状の連続計算 トキノハジメ 14/9/29(月) 14:48 質問[未読]
【76121】Re:階段状の連続計算 ど素人 14/9/30(火) 16:40 発言[未読]
【76123】Re:階段状の連続計算 トキノハジメ 14/10/2(木) 10:39 お礼[未読]
【76124】Re:階段状の連続計算 kanabun 14/10/2(木) 14:56 発言[未読]
【76129】Re:階段状の連続計算 kanabun 14/10/2(木) 23:51 発言[未読]
【76145】Re:階段状の連続計算 トキノハジメ 14/10/4(土) 17:09 質問[未読]
【76146】Re:階段状の連続計算 kanabun 14/10/4(土) 19:50 質問[未読]
【76147】Re:階段状の連続計算 トキノハジメ 14/10/4(土) 21:47 質問[未読]
【76148】Re:階段状の連続計算 kanabun 14/10/4(土) 22:23 発言[未読]
【76149】Re:階段状の連続計算 kanabun 14/10/4(土) 22:25 発言[未読]
【76151】Re:階段状の連続計算 kanabun 14/10/4(土) 22:48 発言[未読]
【76152】Re:階段状の連続計算 トキノハジメ 14/10/4(土) 23:25 お礼[未読]

【76116】階段状の連続計算
質問  トキノハジメ  - 14/9/29(月) 10:12 -

引用なし
パスワード
   いつもお世話になります。
下図のような表の計算をスマートにできるのでしょうか。

  A  B  C  D  E  F  G
1  *  1  2  3  4  5  6
2  1  *  7  8  9 10 11
3  2  7  * 12 13 14 15
4  3  8 12  * 16 17 18
5  4  9 13 16  * 19 20
6  5 10 14 17 19  * 21
7  6 11 15 18 20 21 *

A9=SUM(A2+A3+A4+A5+A6+A7)
B9=SUM(B3+B4+B5+B6+B7)
C9=SUM(C4+C5+C6+C7)
・・・
・・・
F9まで

(I1:O1).Formura=(80/B1)
(I2:N2).Formura=(80/C2)
(I3:L3).Formura=(80/D3)
・・・
・・・
G6まで

* でくぎられております。
どうかよろしくお願いいたします。

【76117】Re:階段状の連続計算
発言  独覚  - 14/9/29(月) 14:23 -

引用なし
パスワード
   ▼トキノハジメ さん:
おこないたいことを具体的に書いてくださいね。

>A9=SUM(A2+A3+A4+A5+A6+A7)
>B9=SUM(B3+B4+B5+B6+B7)
>C9=SUM(C4+C5+C6+C7)
>・・・
>・・・
>F9まで
>
>(I1:O1).Formura=(80/B1)
>(I2:N2).Formura=(80/C2)
>(I3:L3).Formura=(80/D3)
>・・・
>・・・
>G6まで
セルに数式を入れたいのか計算結果の値を入れたいのかどちらでしょうか?

あと、
>=SUM(A2+A3+A4+A5+A6+A7)

=A2+A3+A4+A5+A6+A7

=SUM(A2:A7)
とするのが一般的です。

【76118】Re:階段状の連続計算
質問  トキノハジメ  - 14/9/29(月) 14:39 -

引用なし
パスワード
   ▼独覚 さん:
さっそくのお返事ありがとうございます。

私としましては結果を計算したいのですが、列、行がおおくなると1行ずつコードをかいているとコードが多くなるので、まとめた記述が出来れば教えていただきたいのですが、  宜しくお願いいたします。

【76119】Re:階段状の連続計算
質問  トキノハジメ  - 14/9/29(月) 14:48 -

引用なし
パスワード
   ▼独覚 さん:

>=SUM(A2:A7)
>とするのが一般的です。

早速のお返事有難うございます。
指摘のように=SUM(A2:A7)のようにはしています。
私としては、結果が知りたいのですが、コードを一つずつ記述していると、
行、列が多くなると、コードが増えるので、まとまった記述の方法がしりたいのですが。
宜しくお願い致します。

【76121】Re:階段状の連続計算
発言  ど素人  - 14/9/30(火) 16:40 -

引用なし
パスワード
   ▼トキノハジメ さん:
たまたま似たようなものを作っていたのでこれを改変すれば一応できるかと


Sub 対戦表ー三角行列上部() '進行方向が↓
'

  Dim 横 As Long 'その行がいくつの列を持っているか  最初から作るときは1
  Dim 縦 As Long '作成する列の数
  Dim 変数_1 As Long
  Dim 変数_2 As Long

 
   横 = 1
  
   縦 = 5
   
   For j = 1 To 縦
 
  
        For i = 1 To 横
        Cells(i, j + 1).Value = 変数_1 '入力する値
          変数_1 = 変数_1 + 1
          
          変数_2 = 変数_2 + Cells(i, j + 1)
       
        Next i
    Cells(9, j + 1) = 変数_2

      横 = 横 + 1
    Next j


End Sub


Sub 対戦表ー三角行列下部_4() '進行方向が↑
'

  Dim 横 As Long 'その行がいくつの列を持っているか  最初から作るときは1
  Dim 縦 As Long '作成する列の数
  Dim 変数_1 As Long
  Dim 変数_2 As Long
  Dim 変数_3 As Long
  Dim n As Long


   横 = 5
   n = 横
   縦 = 5
   
   For j = 1 To 縦
 
  
        For i = 1 To 横
        
         変数_2 = 0
  

           Cells(n - i + 1, j + 1).Value = 変数_1 '表に入力する値
            変数_1 = 変数_1 + 1
          
            変数_2 = 変数_2 + Cells(n - i + 1, j + 1)
       
        Next i
       Cells(9, j + 1) = 変数_2

      横 = 横 - 1
      
    Next j


End Sub

【76123】Re:階段状の連続計算
お礼  トキノハジメ  - 14/10/2(木) 10:39 -

引用なし
パスワード
   ▼ど素人 さん:▼独覚さん
有難うございます。参考にしてがんばってみます。
又、解らなければ質問させてください。
有難う御座いました。

【76124】Re:階段状の連続計算
発言  kanabun  - 14/10/2(木) 14:56 -

引用なし
パスワード
   ▼トキノハジメ さん:

ループで数式入れてくのならできますけど?

最初のほうは、1セルずつ式を書き出してみると
'  [A9].FormulaR1C1 = "=SUM(R2C:R[-2]C)"
'  [B9].FormulaR1C1 = "=SUM(R3C:R[-2]C)"
'  [C9].FormulaR1C1 = "=SUM(R4C:R[-2]C)"
'  [D9].FormulaR1C1 = "=SUM(R5C:R[-2]C)"
'  [E9].FormulaR1C1 = "=SUM(R6C:R[-2]C)"
'  [F9].FormulaR1C1 = "=SUM(R7C:R[-2]C)"
だから、
ループで書き出すのなら、
Sub Try1()
 Dim i&
  For i = 1 To 6
   Cells(9, i).FormulaR1C1 = "=SUM(R" & (i + 1) & "C:R[-2]C"
  Next
End Sub


いっぽう
>(I1:O1).Formura=(80/B1)
>(I2:N2).Formura=(80/C2)
>(I3:L3).Formura=(80/D3)
>・・・
>・・・
>G6まで
のほうは、(7セルでなく 6セルだと思う)

'  [I1:N1].FormulaR1C1 = "=80/RC[-7]"
'  [I2:M2].FormulaR1C1 = "=80/RC[-6]"

だから

Sub Try2()
 Dim i&
  For i = 1 To 6
   Cells(i, "I").Resize(, 7 - i).FormulaR1C1 = "=80/RC[-" & 8 - i & "]"
  Next
End Sub

数式に強い人なら、R1C1式の中に関数式を入れ子にして一行で書けるのかも
知れないけれど?

【76129】Re:階段状の連続計算
発言  kanabun  - 14/10/2(木) 23:51 -

引用なし
パスワード
   >だから、
>ループで書き出すのなら、
>Sub Try1()
> Dim i&
>  For i = 1 To 6
>   Cells(9, i).FormulaR1C1 = "=SUM(R" & (i + 1) & "C:R[-2]C"
>  Next
>End Sub

こちらLoopしないで書くなら
 
[A9:F9].FormulaR1C1 = "=SUM(indirect(""R""&COLUMN()+1&""C"",0):R[-2]C)"

こうでいいみたいです.

【76145】Re:階段状の連続計算
質問  トキノハジメ  - 14/10/4(土) 17:09 -

引用なし
パスワード
   kanabunさん

丁寧な解説有難うございます。

もう一つ教えて下さい。上の三角の計算結果を下の三角の同じ番号のところ絵答えを出すのはどこを変えればよいのでしょうか。

For i = 1 To 6
  Cells(i, "1").Resize(, 7 - i).FormulaR1C1 = "=75/[-" & 8 -i & "]"
Next

トライして見ましたが上手くいきません。
宜しくお願い致します。

【76146】Re:階段状の連続計算
質問  kanabun  - 14/10/4(土) 19:50 -

引用なし
パスワード
   ▼トキノハジメ さん:

>もう一つ教えて下さい。上の三角の計算結果を下の三角の同じ番号のところ絵答えを出すのはどこを変えればよいのでしょうか。

このような表のばあい、どこにどのような結果を出力するのでしょう?

  A B C D E  F G H  I   J   K   L   M   N
1 * 1 2 3 4  5 6   80   40   26.666 20  16   13.333
2 1 * 7 8 9 10 11   11.42 10   8.888  8   7.272
3 2 7 * 12 13 14 15   6.667 6.154  5.714 5.333 
4 3 8 12 * 16 17 18   5   4.706  4.444
5 4 9 13 16 * 19 20   4.211 4  
6 5 10 14 17 19 * 21   3.8095
7 6 11 15 18 20 21 *   
8
9
10
11
12

【76147】Re:階段状の連続計算
質問  トキノハジメ  - 14/10/4(土) 21:47 -

引用なし
パスワード
   ▼kanabun さん:
>このような表のばあい、どこにどのような結果を出力するのでしょう?
>
>  A B C D E  F G H  I   J   K   L   M   N
> 1 * 1 2 3 4  5 6   80   40   26.666 20  16   13.333
> 2 1 * 7 8 9 10 11   11.42 10   8.888  8   7.272
> 3 2 7 * 12 13 14 15   6.667 6.154  5.714 5.333 
> 4 3 8 12 * 16 17 18   5   4.706  4.444
> 5 4 9 13 16 * 19 20   4.211 4  
> 6 5 10 14 17 19 * 21   3.8095
> 7 6 11 15 18 20 21 *   

解りにくい質問ですみません。

B1の答えがI1で、C1画の答えがJ1に、以下同じで表の中の1・2・3・4・5・6の答えが右側にI,J,K,L,M,N に出しているのを、A2,A3,A4,A5,A6,A7 と縦に出したいのです。
表の中の 1の答えはA2の1のところで、2の答えはA3の2、のところで、以下同じで表の上三角の計算結果を、下の三角の同じ数字のところに答えをだしたいのです

宜しくお願いいたします。

【76148】Re:階段状の連続計算
発言  kanabun  - 14/10/4(土) 22:23 -

引用なし
パスワード
   ▼トキノハジメ さん:

>B1の答えがI1で、C1画の答えがJ1に、以下同じで表の中の1・2・3・4・5・6の答えが右側にI,J,K,L,M,N に出しているのを、A2,A3,A4,A5,A6,A7 と縦に出したいのです。
>表の中の 1の答えはA2の1のところで、2の答えはA3の2、のところで、以下同じで表の上三角の計算結果を、下の三角の同じ数字のところに答えをだしたいのです

では、A列だけ 順にR1C1形式で参照式を書いてみましょう。

[A2] Cells(2, 1) = 80 / R1C2
[A3] Cells(3, 1) = 80 / R1C3
[A4] Cells(4, 1) = 80 / R1C4
[A5] Cells(5, 1) = 80 / R1C5
[A6] Cells(6, 1) = 80 / R1C6
[A7] Cells(7, 1) = 80 / R1C7

まとめると、
 Cells(n, "A").FormulaR1C1 = "=80/R1Cn"

です。 この R1Cn をExcelが解る書式に直してやります。関節参照です。

Sub Try3()
  [A2:A7].FormulaR1C1 = "=80/(indirect(""R1C""&ROW(),0))"
End Sub

【76149】Re:階段状の連続計算
発言  kanabun  - 14/10/4(土) 22:25 -

引用なし
パスワード
   ↑タイプミス

>関節参照です。

間接参照です。

【76151】Re:階段状の連続計算
発言  kanabun  - 14/10/4(土) 22:48 -

引用なし
パスワード
   つづいて?

B列は
Cells(3, 2) = 80 / R2C3
Cells(4, 2) = 80 / R2C4
Cells(5, 2) = 80 / R2C5
Cells(6, 2) = 80 / R2C6
Cells(7, 2) = 80 / R2C7

まとめると
Sub Try3b()
  [B3:B7].FormulaR1C1 = "=80/(indirect(""R2C""&ROW(),))"
End Sub

'C列は
' Cells(4, 3) = 80 / R3C4
' Cells(5, 3) = 80 / R3C5
' Cells(6, 3) = 80 / R3C6
' Cells(7, 3) = 80 / R3C7

'まとめると
Sub Try3c()
  [C4:C7].FormulaR1C1 = "=80/(indirect(""R3C""&ROW(),))"
End Sub

'D列は
' Cells(5, 4) = 80 / R4C5
' Cells(6, 4) = 80 / R4C6
' Cells(7, 4) = 80 / R4C7

'まとめると
Sub Try3d()
  [D5:C7].FormulaR1C1 = "=80/(indirect(""R""&COLUMN()&""C""&ROW(),))"
End Sub


'E列は
' Cells(6, 5) = 80 / R5C6
' Cells(7, 5) = 80 / R5C7

'まとめると
Sub Try3e()
  [E6:E7].FormulaR1C1 = "=80/(indirect(""R""&COLUMN()&""C""&ROW(),))"
End Sub


'F列は
' Cells(7, 6) = 80 / R6C7
Sub Try3f()
  [F7].FormulaR1C1 = "=80/(indirect(""R""&COLUMN()&""C""&ROW(),))"
End Sub


'以上Loopで表すと
Sub Try33()
  Dim c&, r&
  For c = 1 To 6
    r = c + 1
    Cells(r, c).Resize(7 - c).FormulaR1C1 = _
      "=80/(indirect(""R""&COLUMN()&""C""&ROW(),))"
  Next
End Sub

【76152】Re:階段状の連続計算
お礼  トキノハジメ  - 14/10/4(土) 23:25 -

引用なし
パスワード
   ▼kanabun さん:
遅い時間にも拘らず、きっちりと教えて頂きまして大変有難う御座いました。

また勉強致しました。
今後も宜しくお願い致します。

1130 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free