• ベストアンサー

エクセルのマクロについての質問お願いいたします。

エクセルのマクロについての質問お願いいたします。 コピーについてお願いいたします。 A列に文字(文章)が1行目から150行ぐらいや2000行ぐらいなど文字があります。この行の間には空白の行もあります。 Range("A1:A2000").Copyこちらですと最終行の以下の空白行もコピーするので困っております。 例えば、文字が1000行までで終わっていたら、1000行までコピーする方法をどうぞご教授ください。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Copy とかいかがですか

tksmosm
質問者

お礼

ありがとうございます。 助かりました。また機会がありましたらよろしくお願いいたします。

その他の回答 (1)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

「EXCELでお仕事」のサイトにて http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_030_100.html Excelが認知している最終行を取得する。 サンプルがあります。参考になるかと思います。

関連するQ&A

  • エクセルマクロでコピーの質問です。

    エクセルマクロでコピーの質問です。 こんにちわ^^; よくわからないエラーが起こっているため困っています。 1.xlsという別のエクセルを開いて指定のセルをコピーし、貼り付けるということで下記のマクロを作ってみました。 ちなみにマクロを書いたファイルはsum.xlsで、1.xlsのコピーしたいセルには数値のみ入っています(書式は会計)。 Sub before() Workbooks.Open Filename:="c:¥aaa¥1.xls" Range("a1:a5").Copy ActiveWindow.Close Range("a1").PasteSpecial End Sub しかし、このマクロをThisWorkbookに貼り付けると文字列として保存されてしまいます。 そこで最後の行を Range("a1").PasteSpecial Paste:=xlValues にするとエラー400が出ます。 一応、sheet1(sheet1)に貼り付けて実行してみたところ、コピー自体ができませんでした。 まだ余りエクセルマクロを理解していないため、なぜなのかが良くわからないのでアドバイスをお願いいたします。 ちなみに使っているのはoffice2003のエクセルです。

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

    エクセル・マクロで最終行を表示することについて 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

  • エクセルのマクロについてお願いいたします。

    エクセルのマクロについてお願いいたします。 E10~M10の500行全てのセルに数式が入っております。 そこでマクロにてコピーのボタンを設置しようと思ってます。 Range("E10:M10" & Range("M" & Rows.Count).End(xlUp).Row).Copy 画像のような数字の結果がある部分だけコピーをしたいです。 23行目からは数式が入ってますが結果は””空白になっております。 どうぞよろしくお願いいたします。

  • エクセル マクロでの繰り返し処理について

    エクセル初心者です。エクセル2010を使用しています。 とあるホームページから、ページをコピーして、エクセルに「テキストで貼り付け」をおこない、 A列に8行の項目が入ります。この8行と次の8行の間には、自然に空白行が1行ずつ入ります。 これは、完全に手作業です。 次に、下記の作業を、マクロの自動記録を相対参照で行います。 上記のエクセルのデータを、1つめの8行のデータをコピーして(A1からA8)、C1に「行と列を入れ替え」を選択してC1からJ1に貼り付けます。 その後は、次のデータのまとまりのA10のセルに移ります。これをCtrl+a を押し続けることで、数百件か多いときは4000件ほどの並べ替えをしています。 「データがある間は、この処理を繰り返す。」 というマクロにしたいのですが、参考書等を見ながらチャレンジしてもうまくいきません。 わかる方、教えていただけますか。 以下が、マクロの自動記録でできた物です。データの個数は数百のこともあれば4000件のこともあります。 Sub 行列入れ替え8行() ' ' 行列入れ替え8行 Macro ' ' Keyboard Shortcut: Ctrl+a ' ActiveCell.Range("A1:A8").Select Selection.Copy ActiveCell.Offset(0, 2).Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True ActiveCell.Offset(9, -2).Range("A1").Select End Sub どうぞ、ご指導よろしくお願いいたします。

  • エクセルのマクロ(指定列の空白にひとつ上の文字を入力し続ける)

    エクセルのマクロを教えてください。 指定列の空白にひとつ上の文字を入力し続けるマクロです。 A列指定 A2からスタートし、1000行くらいあるデータ 空白があった場合ひとつ上の文字を入力 空白は、2行連続・3行連続となることもあるが大抵は1行空白 この場合、空白セルの上で一番近いデータをコピーする A列のデータは、文字・数字・日付と様々 1000行ある場合もあるが、それ以下の場合もあるので、10行空白が続いたらマクロが自動的に終了 エクセル2003使用 よろしくお願いいたします。

  • エクセルのマクロの質問です。

    エクセルのマクロの質問です。 こんにちわ。エクセルのマクロを始めて間もないものです。 下記ようなマクロを組みましたが「Windows("B.xls").Activate」(※の部分)でとまってしまいます。 なぜかもわからず困っています。 Workbooks.Open Filename:="B.xls" For i = 1 To 1000 Step 1 Range(Cells(i, 1), Cells(i, 5)).Select Selection.Copy Windows("A.xls").Activate Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Select ActiveSheet.Paste ※ Windows("B.xls").Activate Next i 一応、動作としては Bのマクロを開く→ループ始点(1000回繰り返す) 一回目⇒A1~B5をコピー→Aのエクセルを開く→A列のセル1行目に貼り付ける→Bのエクセルを開く 二回目⇒A2~B5をコピー→Aのエクセルを開く→A列のセル2行目に貼り付ける→Bのエクセルを開く . . . ループ終点 こんな感じで作成しましたが、どうしても上手く動かないで困っています。 無駄な動作が多いかもしれませんが、ぜひアドバイスをお願いします。 また、もっと簡単な動作ができるのであればそちらもお願いします。

  • エクセルのマクロでこういう場合は?

    エクセル97です。 Sheet1の E3:J29 に表があります。 E列、F列は文字列、G列は数値、H~J列には式が入っています。 この表の G列の値が空白や0でない行だけをコピーして、Sheet2 のB2 以下に切れ目なく表の「値」を貼り付けるにはどうのようなマクロを書けばいいのでしょうか?(G列が空白や0の行はSheet2の表では一切無視され、空白行ができないようにしたいのです。) よろしくお願いします。

  • エクセルのマクロで文字の置換について

    エクセルのマクロを使った文字の置換についてお聞きしたことがありましす。 やりたいイメージは例として添付の画像としてアップしましたが、 ・エクセルシートに英数文字列の表がある(例では2行2列ですが、実際は6行48列ぐらいです) ・その表を各英数文字列の間に半角カンマ","を入れて、メモ帳に貼り付けたい   ※実際メモ帳に貼り付ける動作は手動で行うので、クリップボード上で「各英数文字列    の間に半角カンマ","が入っている状態」で構いません。 ・各英数文字列の最初の2文字は必ず"0a"、その後の英数字は3桁または4桁です。 ちなみに、エクセルシートで英数文字列の表をそのままコピーしてメモ帳でペーストすると 各英数文字列の間にスペース(空白)が入ってしまいます。 その後、メモ帳で置換などを使い半角カンマ","を入れてもいいのですが、そこまでをマクロで行いたいと思っております。 上記のことがそもそもエクセルのマクロで出来るかどか分かりませんが、なにか有用な方法がございましたらご教授お願い致します。  ※使用OS:Windows7、エクセルバージョン:2007

  • Excel マクロ 最終セルが毎回違う場合

    マクロ初心者です。 自動記録でマクロを作りました。 最終行が毎回違うので、「コピー(オートフィル)をA列の最終行にあわせてする」と作りたいです。 自動記録ではJ71までコピーになっていますが、J71をA列の最終行にしたいです。 よろしくお願いします。 Range("G3:J3").Select Selection.AutoFill Destination:=Range("G3:J71"), Type:=xlFillDefault Range("G3:J71").Select

  • エクセルマクロで行き詰っています!!

    仕事でマクロを作成しているのですが、行き詰っています。 助けて下さい。 1行目には各項目があり、A行~F行まで、最終行は不定期 各行には個人情報があります。(1行目は項目欄) 2行目をコピーし3行目と4行目と5行目に行を挿入 3行目と4行目と5行目に2行目の情報を貼り付け 6行目をコピーし7行目と8行目と9行目に行を挿入 7行目と8行目と9行目に6行目の情報を貼り付け -繰り返し- 最終行をコピーし最終行の下3行目まで最終行の情報を貼り付け 要は2行目がAさんの情報だとすればAさんの情報とまったく同じものを3行目4行目5行目に挿入したいのです。 6行目がBさんの情報だとすればBさんの情報とまったく同じものをまた全部で4行作りたいのです。 30人のお客さん情報があれば2人のお客さん情報しかないときもあります。 最終行目が不定期なことと、空白じゃないセルまで繰り返すにすると最終行で永遠コピーされてしまうことが悩みです。 同じ結果であれば、方法が違ってもいいです。 マクロ初心者です。 私が作ったマクロは空白を挿入することしか出来ませんでした。 sub test2() range("a2:f2").select range(selection,range("a2:f2").end(xldown))).select dim colleft as long dim colright as long dim i as long application.screenupdating=false colleft=selection(1).colum colright=seletion(selection.count).column for i = selection(selection.count).row to selection(1).row+1 step -1 range(cells(i,colleft),cells(i,colright)).resize(4).insert(xlshiftdown) next i application.screenupdating=true end sub 上記が私が作れたマクロです。 作れたといってもいろんなサイトよりコピーして加工しただけなので、 不要なところも多々あるかと思います。 期限がせまっているので切羽詰っています。 誰か助けていただけませんか? よろしくお願いします。

専門家に質問してみよう