こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルでK列の最終行のセル値を指定のセルに・・・

いつもお世話になっております。
5月に下記のコードを教えてもらい、簡単な改良や条件を追加しながら複数のシートに展開中なのですが新しいパターンが出たのでHELPです。

K列の最終行の値を同じ表のH6のセルに転記してそれを使って出た計算結果(セルH7)の値をH列の最終行のセルに転記したいのですが。
(具体的な列とセルはシートで変わる可能性があります)

下記のコードは別のシート(計算表)の特定(結果)のセルの値を指定した列に転記するコードでこれで何とかしようとしましたが歯が立たず。
なにとぞよろしくお願いいたします。

Option Explicit
Sub Sample3() 
 Dim MyRange As Range
 With ThisWorkbook
  Set MyRange = _
   .Sheets("入力表").Cells(Rows.Count, 5).End(xlUp)
  MyRange.Offset(1, 0).Value = .Sheets("計算表").Range("J15").Value
  MyRange.Offset(1, 1).Value = .Sheets("計算表").Range("J20").Value
 End With
End Sub

投稿日時 - 2019-12-06 16:16:28

QNo.9686982

困ってます

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

質問通りに書くと、下のようになります。
質問にあるコードはよく分かりません。
>H列の最終行のセルに転記したい
とすると上書きですが、最終行の1行下に書くなら、
.Cells(Rows.Count, "H").End(xlUp).Offset(1, 0) = .Range("H7").Value
になります。

Sub Sample3A()
 With ThisWorkbook.Sheets("入力表")
  .Range("H6") = .Cells(Rows.Count, "K").End(xlUp).Value
  .Cells(Rows.Count, "H").End(xlUp) = .Range("H7").Value
 End With
End Sub

投稿日時 - 2019-12-06 17:16:36

補足

早々のご回答ありがとございます。
ご推察の通り最終行の1行下が目的セルでした。

今自宅でダミーシートで動作確認して期待通りに動きました。

以前マクロがバッティングした経験があるので月曜日に会社の本チャンのシートで試してみて結果報告いたします。

投稿日時 - 2019-12-06 22:37:31

お礼

実際のシートで動作確認して期待通りに動きました。

ただし、担当者に実際の作業を確認したところ、実務的には最終行(+1)のセルから引っ張るよりも直接計算式(セル)の値と結果を各列の最終行(+1)に転記するほうが分かりやすく手間もかからず、ということに気づいたので式の右辺と左辺を交換してついでに要素も3つに増やして最後に、後知恵で結果転記後3つの参照元のセルの削除までを試行錯誤で実行できるようにして目的達成できました。

同様の入力作業が多いので色々なシートに汎用に使わせていただきます。
ありがとうございました。

投稿日時 - 2019-12-09 16:52:45

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

NO2です。シート名を変数にするのを忘れてました。

Dim ShName As String

ShName = "入力表"
Col1 = "K"
Col2 = "H"
Row1 = 6
Row2 = 7

With ThisWorkbook
Set Sh = .Sheets(ShName)

投稿日時 - 2019-12-06 17:26:54

お礼

ご丁寧に2度もご回答いただき感謝です!!

うまくいくこと確認しました。
BSは最初にご回答いただいた#No2さんにさせていただきますのでご了承ください。

投稿日時 - 2019-12-09 16:54:22

ANo.2

> 具体的な列とセルはシートで変わる可能性があります
ということなので、なんか変な感じのコードだけど
Sub Test()
Dim Sh As Worksheet
Dim Col1 As String, Col2 As String
Dim Row1 As Long, Row2 As Long

Col1 = "K"
Col2 = "H"
Row1 = 6
Row2 = 7

With ThisWorkbook
Set Sh = .Sheets("入力表")
Sh.Cells(Row1, Col2).Value = Sh.Cells(Rows.Count, Col1).End(xlUp).Value
Sh.Cells(Rows.Count, Col2).End(xlUp).Value = Sh.Cells(Row2, Col2).Value
' 最終行の一個下ならこっち↓
' Sh.Cells(Rows.Count, Col2).End(xlUp).Offset(1, 0).Value = Sh.Cells(Row2, Col2).Value
Set Sh = Nothing
End With
End Sub

投稿日時 - 2019-12-06 17:17:31

補足

早々のご回答ありがとうございます。
動作確認させていただき期待通りの結果が得られました。

#No1さんも#No2さんも質問の不備を推測し補足の正解まで回答いただき驚きです。
また、不要な追加条件(列、セルが変わる)等を付記したもので「変な感じ・・」になってしまい申し訳ありませんでした。

以前長いコードでご回答いただき当方の知識ではどこに列やセルが指定されているのかわからず試行錯誤で困ったことがあるので追記した次第です。

今回の場合は指定箇所が当方にもわかりますので無駄なお手数をおかけしてしまいました。

投稿日時 - 2019-12-06 22:52:17

あなたにオススメの質問