Page 76 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼FormulaR1C1について こうき 02/9/12(木) 18:40 ┗Re:FormulaR1C1について こうちゃん 02/9/12(木) 18:56 ┗Re:FormulaR1C1について こうき 02/9/12(木) 19:30 ┣Re:FormulaR1C1について こうちゃん 02/9/12(木) 20:11 ┗Re:FormulaR1C1について(おまけ) こうちゃん 02/9/12(木) 20:16 ┗Re:FormulaR1C1について(おまけ) こうき 02/9/13(金) 16:45 ─────────────────────────────────────── ■題名 : FormulaR1C1について ■名前 : こうき ■日付 : 02/9/12(木) 18:40 -------------------------------------------------------------------------
2つのセルの数字 (例えば、Range("A1")=10,Range("A2")=20だとして、 Range("A3")="Range("A1")"&"Range("A2")"=1020という形) を結合したいのですが、マクロの記録を行うと、 Range("A3").FormulaR1C1="=R[1]C[1]&R[2]C[1]" となりました。 で、行と列を変数にして実行したところ、 結果は、#NAME?と出てきました。 FormulaR1C1は変数では使えないのでしょうか? |
こうき さん、こんにちは >FormulaR1C1は変数では使えないのでしょうか? 使えますよ、どんな書き方したのでしょうか? それをアップするとレスがつきやすいと思いますよ。 まあ、こんな感じでどうでしょ? Sub test() Dim a As Integer Dim b As Integer a = 1 b = 2 'これは相対参照なのでActiveCellからみた行と列を指定します Range("A3").FormulaR1C1 = "=R[" & a & "]C[" & a & "] & R[" & b & "]C[" & a & "]" '絶対参照の場合はこんな感じ 'Range("A3").FormulaR1C1 = "=R" & a & "C" & a & " & R" & b & "C" & a End Sub |
こうちゃん さん、こんばんわ。 > 'これは相対参照なのでActiveCellからみた行と列を指定します > Range("A3").FormulaR1C1 = "=R[" & a & "]C[" & a & "] & R[" & b & "]C[" & a & "]" すいません。相対参照ということも知りませんでした。 となると困ったことになるんですが、実はsheet1の2つのセルの中身を結合してsheet2に表示したいのです。 今のコードは、 Sub 表示 Dim r As Long Worksheets("sheet1").Activate Range("c3").Activate ActiveCell.End(xlDown).Select r = Selection.Row With Sheets("sheet1") u1= .Cells(r, 7) u2 = .Cells(r, 8) k1 = .Cells(r, 9) k2 = .Cells(r, 10) End With Worksheets("sheet2").Activate ActiveSheet.Range("D57").Activate ActiveCell.Formula1 = "=u1&"" (""&u2&"")""" ActiveSheet.Range("G57").Activate ActiveCell.Formula1 = "=k1&"" (""&k2&"")""" End Sub と書いております。 先ほどの質問では書いてなかったのですが、表示させたいのは、 シート1のD57に「k1 (k2)」という形で、シート1のD58に「u1 (u2)」という形です。 こういう場合、どうしたらよいのでしょうか? はじめからこう書いておけばよかったですね。 二度手間になってしまって、こうちゃんさん、ごめんなさい! |
こうき さん、こんばんは >すいません。相対参照ということも知りませんでした。 >となると困ったことになるんですが、実はsheet1の2つのセルの中身を結合してsheet2に表示したいのです。 中身(値)を表示したいのならこんな感じでいいんじゃないですか? >Sub 表示 >Dim r As Long >Worksheets("sheet1").Activate > Range("c3").Activate > ActiveCell.End(xlDown).Select > r = Selection.Row > With Sheets("sheet1") > u1= .Cells(r, 7) > u2 = .Cells(r, 8) > k1 = .Cells(r, 9) > k2 = .Cells(r, 10) > End With >Worksheets("sheet2").Activate > ActiveSheet.Range("D57").Activate > ActiveCell.Formula1 = "=u1&"" (""&u2&"")""" ActiveCell.Value = u1 & "(" & u2 & ")" > ActiveSheet.Range("G57").Activate > ActiveCell.Formula1 = "=k1&"" (""&k2&"")""" ActiveCell.Value = k1 & "(" & k2 & ")" >End Sub 値を設定したいのか、計算式を設定したいのかが判然としませんね? まあ、両方いっときますかぁ^^; 整理すると・・ sheet1の最終行の7列の値+"("+8列の値とsheet1の最終行の9列の値+"("+10列の値を表示するなら、こんな感じ・・ Sub 表示1() Dim r As Long Dim u1 As Variant Dim u2 As Variant Dim k1 As Variant Dim k2 As Variant r = Worksheets("sheet1").Range("c3").End(xlDown).Row With Sheets("sheet1") u1 = .Cells(r, 7) u2 = .Cells(r, 8) k1 = .Cells(r, 9) k2 = .Cells(r, 10) End With With Worksheets("sheet2") .Range("D57").Value = u1 & "(" & u2 & ")" .Range("G57").Value = k1 & "(" & k2 & ")" End With End Sub 最終行のROWを使って、計算式を絶対参照で指定するならこんな感じ・・・ Sub 表示2() Dim r As Long r = Worksheets("sheet1").Range("c3").End(xlDown).Row Worksheets("sheet2").Range("D57").FormulaR1C1 = _ "=sheet1!R" & r & "C7 & " & """("" & " & _ "sheet1!R" & r & "C8 & " & """)""" Worksheets("sheet2").Range("G57").FormulaR1C1 = _ "=sheet1!R" & r & "C9 & " & """("" & " & _ "sheet1!R" & r & "C10 & " & """)""" End Sub #変数はちゃんと宣言したほうがいいかも^^; |
相対参照 A1方式 Range("A1") R1C1方式 R[1]C[1] 絶対参照 A1方式 Range("$A$1") R1C1方式 R1C1 |
こうちゃん さん、ありがとうございます。 FormulaR1C1についてずいぶん理解が進みました。 昨日のよるから今まではマクロを作成する時間がなかったので これから作ってみます。 また分からないことが出てきたら質問させていただきます。 それでは |