• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで値の取得)

VBAで値の取得

このQ&Aのポイント
  • VBAでエクセルの値を取得する方法について
  • エクセルのシートに計算した値をVBAで入れたい場合の方法
  • 値の取得を行うためにVBAのコードを修正する

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>Cells(Cnt, 6).Formula = "=TRUNC(1800 * Cells(Cnt, 2)) + TRUNC(1350 * Cells(Cnt, 3))" は、文字列という事の認識が無い初心者がよくやる事です。 変数名も""で囲って変数として機能しないようにしてしまいます。 Cells(Cnt, 6).Formula = "=TRUNC(1800 * " & Cells(Cnt, 2) & ") + TRUNC(1350 * " & Cells(Cnt, 3) ")" "" で囲んだ部分全てを文字として記入してしまうので、式として必要な部分と値(セルの値)として記入される部分をきちんと認識して記述する必要があります。

mnhc33
質問者

お礼

おっしゃる通りでした。 思っていた結果が得られました。 助かりました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • laputart
  • ベストアンサー率34% (288/843)
回答No.3

Sub Macro1() ' Dim LastR As Long LastR = Range("B65536").End(xlUp).Row If IsNumeric(LastR) Then For i = 3 To LastR Range("F" & CStr(i)).Value = Int(1250 * Range("B" & CStr(i)).Value) + Int(1000 * Range("C" & CStr(i)).Value) + Int(1250 * Range("D" & CStr(i)).Value) Next i End If End Sub --------------解説--------------------- 整数部を得る関数は INT(数字) Range(セル).value はセルの値になります。 Cstr(数字) は数字を文字列に変換する関数です

mnhc33
質問者

お礼

ありがとうございます。Intは使ったことがなかったので、勉強してみます。

全文を見る
すると、全ての回答が全文表示されます。
noname#130090
noname#130090
回答No.2

これでどうでしょうか? Sub test01()   Dim LastR As Long, Cnt As Long '最終行と行番号   LastR = Range("A65536").End(xlUp).Row   For Cnt = 3 To LastR 'B3から最終行まで     Cells(Cnt, 6).Formula = "=TRUNC(1800 * " & Cells(Cnt, 2) & ") + TRUNC(1350 * " & Cells(Cnt, 3) & " )"   Next End Sub

mnhc33
質問者

お礼

ありがとうございます。おかげで思っていたような結果が得られました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAについて

    VBAで最終行を取得する際に、""などを無視するようにしたいのですが、どうすればよいのでしょうか? 最終行は以下のように取得しています。 GYOMAX_T = SH.Cells(65536, cnt).End(xlUp).Row すみませんが、よろしくお願いいたします。

  • VBA 選択された離れたセルの値の取得について

    EXCELのVBAでどうしても前に進めず困っております。 目的としているコードは、離れたセル(複数)をあらかじめCtrlキーで選択状態にしておき、選択されたセルの値のみをVBAが別のセルに並べていくというものです。 以下が私の作ったコードなのですが、思ったとおりの動作をしてくれません。 VBA初心者なもので、おかしな記述がたくさんあると思うのですが、どなたかアドバイスお願いします。 Public Sub xx() Dim SelectArea As String Dim TargetCell As Range Dim a As Integer Dim Row As Integer Dim Column As Integer Dim CNT1 As Integer a = 0 Row = 0 Column = 0 For CNT1 = 1 To 10 Row = Row + 1 SelectArea = Selection.Address Set TargetCell = Range("B3").Cells(Row - 1, Column) If Intersect(Range(SelectArea), TargetCell) Is Nothing Then Else Range("A30").Cells(a, 0) = Range("B3").Cells(Row - 1, Column).Value a = a + 1 End If Next End Sub

  • エクセル VBAコードの書き方を教えてください。

    エクセル VBAコードの書き方を教えてください。 今回は、VBAで掛け算をしたいのですが、 コードが間違っているためか実行ができません。 VBAコードのどこに不備があるか教えてください。 <条件> *最終行(H列で判断)を選択し、  I2(2行、I列)~I最終行(最終行,最終行のI列)までの  範囲を計算したい。 *たとえば、I2であれば、F2×G2×H2×0.01の値を代入したい。  I最終行であれば、F最終行×G最終行×H最終行×0.01の値 EX) 添付ファイルの場合、I2=500、I4=125、にしたい。 <参考> Sub SURYO() Dim r As Long With Sheets("Sheet1") For r = 2 Cells(r,9).value = Cells(r,6) * Cells(r,7) * Cells(r,8) Next End With End Sub よろしくお願いします。

  • VBA データのある最終行の取得

    エクセルVBAで最終行を取得する良い方法を教えて下さい。 VBA初心者でいきづまっていまして、、、 内容はボタンを押した時にF列に対して最終行を取得して、 その最終行の下のセルにボタンの内容が繁栄させるようにしたくて Private Sub CommandButton202_Click() Dim lastRow As Long lastRow = Cells(Rows.Count, 6).End(xlUp).Row + 1 Cells(lastRow, 6).Value = CommandButton202.Caption End Sub と作ってみたのですが、F17より下に文字がはいっているため、 検索範囲を「F列」ではなく、「F2:F16」のように範囲を指定したいのですがどうしたらよいでしょうか、、、。 結構色々調べてはみたのですができなくて、、、

  • Excel VBA教えてください

    Excel シート1のA2~E2に数字を入力します A4~E4に A2*10・B2*10・・・と A5~E5に A2*15・B2*15・・・と計算式がはいっています A4~E4の結果とA5~E5の結果をA10~E10以降に代入します ただA2~E2の数字は毎回変わるので履歴を残したいです 下記のプログラム何処を直せばよいですか? Private Sub CommandButton1_Click() Dim LastR As Long LastR = Range("A65536").End(xlUp).Row + 1 If LastR < 10 Then LastR = 10 Range(Cells(LastR, "A"), Cells(LastR, "E")).Value = Range("A4:E5").Value End Sub

  • エクセルVBAで最終行取得方法

    エクセルVBAで最終行を取得する良い方法を教えて下さい。 VBA初心者でいきづまっていまして、、、 内容はボタンを押した時にF列に対して最終行を取得して、 その最終行の下のセルにボタンの内容が繁栄させるようにしたくて Private Sub CommandButton202_Click() Dim lastRow As Long lastRow = Cells(Rows.Count, 6).End(xlUp).Row + 1 Cells(lastRow, 6).Value = CommandButton202.Caption End Sub と作ってみたのですが、F17より下に文字がはいっているため、 検索範囲を「F列」ではなく、「F2:F16」のように範囲を指定したいのですがどうしたらよいでしょうか、、、。 結構色々調べてはみたのですができなくて、、、

  • 最終行のコピーペーストのマクロ作成をご指導ください。

    最終行のコピーペーストのマクロ作成をご指導ください。 1つのブックに60シートあります。D~Sまでの行をセルの結合をして文字入力がしてあります。 又、どんどんテキスト行が追加されてゆきます。毎回、行の最終行をコピーして 指定セルB21:s23(セル結合してあり)に貼り付けたい(3シート目~60シート目全てのシート)のですが、上手く行きません。 マクロ素人ですが、思考錯誤してみましたが、駄目です。ご指導下さい。 出来れば、1から教えてください。御願いします。 Dim n As Integer Dim LastR1 As Long, LastR2 As Long For n = 3 To 60 'データシートの数だけループ LastR1 = Sheets(n).Range("B22") '貼付先取得 LastR2 = Sheets(n).Range("D65536").End(xlUp).Row '貼付元シートの最終行取得 With Sheets(n) '貼付元データをコピー(最終行) ここがおかしい? .Range(.Cells(22, 4), .Cells(LastR2, 60)).Copy End With ActiveSheet.Paste Destination:=Sheets(n).Cells(LastR1) '貼付 Next End Sub

  • VBA 最終列に入力された値の表示について

    VBAで最終列に入力された値の表示について教えてください。 例えば10行目の10列目(J列)に”123”と入力された値をセル”D1”に表示させたいのですがどのようにすればよいのでしょうか。 A列の最終行については Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long r = Cells(Rows.Count, 1).End(xlUp).Row Range("D1").Value = Cells(r, 1).Value End Sub でうまく表示できたのですが、最終列についてなかなかうまくいきません。 どなたかご指南ください宜しくお願いします。

  • VBAでの行集計

    VBAでの行集計 いつもお世話になっております 今 マクロでの行集計で困っております。 お力をお貸し下さい m(__)m したいことは B列最終セルを見つけ出し 列の合計を出す 合計を右横最終セルまでコピーする 最終はR列までです そこで下記のマクロで合計は出しました Dim BeforePos As Long BeforePos = Range("B4").End(xlDown).Row Cells(BeforePos + 1, 2).Formula = "=SUM(B4:B" & BeforePos & ")" このセルの数式を右最終列までコピーをしたい それだけのことですがうまくいきません どうかよろしくお願いします

  • 最終行がわからない場合

    エクセルです。 ・最終行は毎回違ってくるので Cells(Rows.Count, "A").End(xlUp).Row で取得したいです。 ・今は最終行が51行という前提で作業をしています。 ・1行目にはタイトルが入っています。 ・2行目以降には文字が入っています。  今回はテストのため数字を入れました。 最終行が51の場合は ************************************************ Sub test1() Dim i As Long Dim cnt As Long For i = 1 To 10 Call test2 Next End Sub -------------------- Sub test2() Dim str As String If cnt = 0 Or cnt = 42 Then cnt = 2 ElseIf cnt = 2 Then cnt = cnt + 10 ElseIf cnt = 12 Then cnt = cnt + 10 ElseIf cnt = 22 Then cnt = cnt + 10 ElseIf cnt = 32 Then cnt = cnt + 10 End If With Sheets("Sheet1") For myRow = cnt To cnt + 9 str = str & "," & .Cells(myRow, 1) Next myRow End With Debug.Print str End Sub ************************************************ このような方法で、str に10個ずつセルの値を格納できるのですが 最終行が不明の場合はどうすればいいのでしょうか? イミディエイトウインドウに表示される値は ,1,2,3,4,5,6,7,8,9,10 ,11,12,13,14,15,16,17,18,19,20 ,21,22,23,24,25,26,27,28,29,30 ,31,32,33,34,35,36,37,38,39,40 ,41,42,43,44,45,46,47,48,49,50 ,1,2,3,4,5,6,7,8,9,10 ,11,12,13,14,15,16,17,18,19,20 ,21,22,23,24,25,26,27,28,29,30 ,31,32,33,34,35,36,37,38,39,40 ,41,42,43,44,45,46,47,48,49,50 です。 最終行まで来たらまた2行目から取得しなおします。 なのでIf cnt = 0 Or cnt = 42 Thenにしました。 最終行が60だったり65だったりした場合は、strに10個格納できないですが、少ない分には問題ないです。 これで、最終行が100でも200でも対応できるコードを作りたいのですが わかりません。 お知恵を拝借願います。

専門家に質問してみよう