• ベストアンサー

最終行までコピーする

A1「単価」,B1「数量」の表があります C1「売上」としてC2にa2*b2の式をいれc列の最終行までコピーしたいのです。A列、B列にブランクはありません。最終行は決まっていません 似たようなサンプルは見かけるのですがピタリのは見つけられませんでした。 当方まだマクロの入り口をウロウロしている程度なのでよろしくお願いします

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

ブランク行が無いなら Rangeオブジェクトの CurrentRegionを使う方法が使えるかと思います Sub Macro1()   dim r as Range   ' シートの B1セルを含む表の範囲を取得   Set r = ActiveSheet.Range("B1").CurrentRegion   ' 取得した範囲のB列のみを取得   Set r = Intersect( r, ActiveSheet.Range("B:B"))   if not r is Nothing then     ' 取得した範囲の1列左を取得     set r = r.Offset( 0, 1 )     ' 取得した範囲の数式を設定     r.FormulaR1C1 = "=rc[-2] * rc[-1]"   end if End Sub といった具合です

shinsuke
質問者

お礼

ありがとうございました 私の考えていた通りの答えが出ました

その他の回答 (1)

  • miyuyu
  • ベストアンサー率61% (30/49)
回答No.1

こんにちは。 これをきっかけにステップアップできれば幸いです。 但し、貴殿ご希望の通りかは不明ですのであしからず。 Sub Macro1() Dim iRow As Integer Dim bExit As Boolean Dim sFormula As String Application.ScreenUpdating = False iRow = 1 bExit = False Do iRow = iRow + 1 sFormula = Sheet1.Cells(iRow, 3).FormulaR1C1 If sFormula = "" Then If Sheet1.Cells(iRow, 1) = "" Then bExit = True iRow = iRow - 1 Else Sheet1.Cells(iRow, 3).FormulaR1C1 = "=RC[-2]*RC[-1]" End If End If Loop Until bExit = True Sheet1.Range(Cells(2, 3), Cells(iRow, 3)).Copy '' コピーした内容の処理 '' コピー範囲の破線を消したいときその処理をしてください Application.ScreenUpdating = True End Sub

shinsuke
質問者

補足

早速のお答えありがとうございます Sheet1.Range(Cells(2, 3), Cells(iRow, 3)).Copy の行で「rangeエラー」となります ご教授のほど、何分宜しくお願いいたします

関連するQ&A

  • (Excel2003)すぐ左の最後の行までコピーするマクロを教えてください

    マクロ初心者です。 表記の件に就き、何卒ご教授の程、宜しくお願いします。 ・エクセルで以下のような表があるとします。 __A__B__C__D→ 1_数量_単価_金額 2_4,000_100_=B3*C3 3_5,000_200_ 4_3,000_120_ 5_5,000_160_ ↓ ・そしてこのAとB列が毎回下に増えるとして、C2セルの数式を  B列の最後の行までコピーするマクロを教えて下さい。 (実際は、C2セルにVLOOK関数が入っており、最終行は何千行まであります) 何卒ご教授の程、宜しくお願い申し上げます。 

  • 最終行から指定行までの削除

    VBAで、表のB列の最終行からB列の91行目までの行削除するマクロを作りたいのですが、うまくいきません。

  • エクセル・マクロで最終行を表示することについて

    エクセル・マクロで最終行を表示することについて C列の最終行を表示する場合、以下のマクロで表示できます。 今回はC列に C1=A1&B1 C2=A2&B2  ↓ という式が入力されている場合について質問します。 A列とB列が空白の場合、C列には0が表示されます。 したがって、下記のマクロだとこの0の行が最終行となります。 私の希望はこのC列の0は空白とみなし、0以外の値や文字が入力されている最終行を表示することです。 どのような工夫をすれば可能でしょうか? ご指導よろしくお願いします。 Sub 最終行表示() maxrow = Range("c65536").End(xlUp).Row MsgBox maxrow End Sub

  • シート1のC列の最終行をコピーして同じ行に値貼り付けしたい

    シート1のC列の最終行を取得して その行を丸々値貼り付けするマクロを作りたいと思います。 シート3のB18の値をシート1のC列の最終行の1つ下のセルに値貼り付け すると、その行のA、B列に日付が入力される関数が入っています。(下まで) 関数が入ったままだと、うまくいかない時があるので最終行をコピーして値貼り付けしたいのですが、マクロの作り方を教えてください。 シート1の最終行に貼り付け Sheets("Sheet3").Select Range("B18").Select Selection.Copy Sheets("Sheet1").Select Range("C65536").End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub 最終行をコピーして値貼り付け Dim 最終行 As Integer 最終行 = Range("C65536").End(xlUp).Row Range("A6:C" & 最終行).Select Selection.Copy Sheets("Sheet1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub このマクロだと、A6からC列の最終行まで全てコピーされてしまうので、C列の最終行のAからC列まで1行だけコピーできないでしょうか?

  • データの最終行まで計算式をコピーするマクロ

    エクセル2013を使用しています。 A列2行からとB列2行から各々 データ行が数百行あり、 C列2行に計算式を入力。 セルの右下フィルハンドルをダブルクリックすると、 例 C2:C600 の固定範囲で計算式がコピーできますが、 毎回このデータ行数が変わります。 計算式はあと4つありますので全部で5回繰り返しとなります。 マクロで最終行を検索してデータの最終行を見つけてコピーするように したいのです。 表のイメージ     A    B    C    D    E   F   G   H     I   J   K   L   M 1  data  datb 計算式1             計算式 計算式 計算式          計算式 2    ↓        ↓ 3 | 600 data datb 計算式

  • エクセル(2003)で検索結果を行を変えて表示したい

     初めて質問させていただきます。sheet1に下記の表があります。この表を何回か検索し、その都度、データのある行の次の行に検索結果を表示したいと考えています。たとえば、一回目の検索では、A列を「花」で検索し、結果をデータのある行の次の行(この例では行番号5)に表示します。二回目の検索では、A列を「樹木」で検索し、結果を一回目の検索結果のある行の次の行(先ほど「花」で検索した結果を表示した行の次・この例では行6)に表示させたいのです。このようなことを、できれば関数を使って行いたいのですが、ぜひ、教えてください。 sheet1  A (種類) B(単価)C(数量)D(合計) 1  花    100    5   500   2  樹木   1800    2   3600 3  樹木   3000    1   3000 4  花    400    6   2400 5  花  (ブランク) 11   2900 6  樹木 (ブランク) 3 6600   3 shht2  A (種類) B(単価)C(数量)D(合計) 1   

  • 検索してないものを最終行に記述する

    worksheetAのSheet1 A列と worksheetBのSheet1 A列を比べてworksheetBに含まれていないものをworksheetA A列B列より抽出してworksheetB A列最終行B列最終行にそれぞれ書き込むマクロを教えてください 当方作成してみたのですがどうも.nameで名前の定義をしたのですが他bookでは参照されずにインデックスエラーとなってしまいました。行数がお互い3000位あるので作業速度も重視したいのですがお願いいたします。

  • 該当行の最終列にコピーする

    すべて windows7 使用するPCによってoffice2007、2010とoffice xp Sheet1A1:D1000の表をSheet2&3A1:BZ1000の表該当セルにコピー(書式、セルフォント色とも)します。 Sheet1 1行めはタイトル行です。 Sheet1A2の値(英数字)をSheet2&3A:Aから検索し、その行の最終列の次列からSheet1B2:D2の値(B2は文字列C2は日付D2は文字列)をコピー(書式、セルフォント色とも)します。

  • 条件に合うデータを別のブックに書き出したい

    お世話になります。 エクセル2003で、数量を入力した「行」だけを別のブックに書き出したいのですが、機能や関数を教えてください。 (表1)    A     B     C    D 1 商品名  単価  数量  合計 2  い    100   4    400 3  ろ    500   2    1,000 4  は    200 5  に    150 6  ほ    330 7  へ    230   5    1,150     ・     ・    ・    ・     ・     ・    ・    ・ 17  た    180   2    360 と、17行、4列の表があります。この「数量」が入力された行だけ、 (表2)   A    B    C   D 1 数量 単価 合計 商品名 2  4   100  400   い 3  2   500  1,000  ろ 4  5   230  1,150  へ 5  2   180  360   た (表2)のように書き出したいのです。 (表1)から抽出される行数は、必ず4行以下です。 (表1)に数量を入力すると、(表2)が自動的に変わるのが好ましいです。 マクロやVBAは苦手なのでエクセルの機能や関数で教えていただければ幸いに存じます。 情報が足りなければ補足します。 宜しくお願いします。

  • 最終行の検索なんですが、、

    きっと簡単だと思うのですが、最終行の検索が、、ど初心者でわかりません。 A列の最終行(可変)にあるB、C、D、Eの値を拾いたい。 データは別のシートにあります。 過去の質問を2時間くらい検索したけどVBA、マクロ関連が多く参考にできるものが見つからないのでよろしくお願いします。

専門家に質問してみよう