• ベストアンサー

プログラムを教えてください。

fumufumu_2006の回答

  • ベストアンサー
回答No.3

ANo.2です。 sheet2の1行目から貼り付けるのかとか、sheet1には値のみ(計算式はない)とか、A列に必ず値が入っているかとかによっても違うと思いますが・・・ とりあえず、L:Rはすべて入力されているデータだけがSheet2にあるはずなので、Sheet2の最後の行をL列でチェックします。 sheet2の1行目にはデータ貼り付けなくてもいい場合 If WorksheetFunction.CountBlank(Sheet1.Range("L" & i & ":R" & i)) = 0 Then 'i行のL:Rにブランクがなければ Sheet1.Range("A" & i & ":R" & i).Copy Destination:=Sheet2.Range("L" & Sheet2.Rows.Count).End(xlUp).Offset(1, -11) 'L列の最後の行の次の行のA列からにコピー Sheet1.Range("A" & i & ":R" & i).ClearContents '元データをクリア End If sheet2の1行目にもデータ貼り付ける場合(ついでに値のみをコピー) If WorksheetFunction.CountBlank(Sheet1.Range("L" & i & ":R" & i)) = 0 Then 'i行のL:Rにブランクがなければ Sheet1.Range("A" & i & ":R" & i).Copy 'i行のA:Rをコピー If Sheet2.Range("L1") = "" Then '前にデータがコピーされていればL1にはデータが入っているはず Sheet2.Range("A1").PasteSpecial Paste:=xlValues '1行目に値のみを貼り付け Else Sheet2.Range("L" & Sheet2.Rows.Count).End(xlUp).Offset(1, -11).PasteSpecial Paste:=xlValues 'L列の最後の行の次の行のA列からに値のみを貼り付け End If Sheet1.Range("A" & i & ":R" & i).ClearContents '元データをクリア End If とかではどうでしょうか?

関連するQ&A

  • EXCEL データをコピーして別シートの最初の空白行に貼り付けたい

    EXCEL データをコピーして別シートの最初の空白行に貼り付けたい Sheet1はA列からR列までを使ったシートで、1行目は各項目があり、2行目からは当月のデータが入力されています。 Sheet2はSheet1の1行目と同じようにA列からR列までが項目になっていて、期中のデータを付け足していきたいと思っています。 マクロの記録でやってみたのですが、前月の最後の行(貼り付ける最初の空白行)の認識の仕方が分からず、Sheet2への貼付がうまくいきません。 どのような方法でやったらいいのか教えて下さい。

  • 【Excel VBA】データの最終行について

    Excel2003を使用しています。 ある一覧表形式のデータSheet1をSheet2に値のみコピーして、このSheet2を“印刷用”として、ページ設定等をして、印刷のみに使用しようと思っています。 Sheet2のI列、J列、K列には数値が入力されていて、I列、J列、K列のデータの最終行の1行下に、それぞれ6行目からデータ最終行までの合計の数式が入力されるよう、コードを追加したのですが、数式は入力されるものの、入力したい行に数式が入力されません。 マクロを実行して、数式が入力された行を見てみると、301行目に入力されていました。 Sheet1は別のシートのデータを数式により表示していて、数式が300行まで入力されているので、Sheet2の元になっているSheet1の影響(?)なのかな~?と…。こういう場合、どうすればいいでしょうか? コードは下記のようになっています。 よろしくお願いします。 ---------------------------------------- Sub 印刷用作成() Dim i As Integer Dim j As Long Sheets("Sheet1").Activate Range("B6:L6", Range("L6").End(xlDown)).Select Selection.Copy Sheets("Sheet2").Select Range("B6").PasteSpecial xlPasteValues Application.CutCopyMode = False For i = 9 To 11 j = Application.Max(j, Cells(65536, i).End(xlUp).Row + 1) Next For i = 9 To 11 Cells(j, i).FormulaR1C1 = "=SUM(R2C[0]:R[-1]C[0])" Next i End Sub

  • 【VBA】Ifで他シートから検索しコピーする

    Excel vbaについて教えてください。 自分で作成したコードが、うまく動かず悩んでいます。 ●作りたいもの Sheet3のA列にある数字を検索値とし、 Sheet1のA列を検索し、合致する行のB列~最終列までコピーし、 Sheet3のB列から貼付する。 ※Sheet1にある列数(項目数)は不定です ●作成したマクロ Sub test() Dim sh1 As WorkSheet Dim sh2 As WorkSheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet3") d = sh2.Range("A1").End(xlDown).Row 'Sheet3検索値のA列のデータの最終行 g = sh1.Range("B1").End(xlToRight).Column 'Sheet1の最終列 k = 2 For i = 2 To d    'Sheet3最終行まで If sh1.Cells( i & "A") = sh2.Cells( 1,"A") Then '条件)Sheet1とSheet3のA列が合致 For j = 2 To g                      'Sheet1の最終列まで sh2.Cells( k , j ) = sh1.Cells( i , j ) 'Sheet1のB行から最終列をコピーしSheet3へ貼付 Next j End If Next End Sub いろいろ直していたのですが、Set sh2 = Worksheets("Sheet3")で「インデックスが有効範囲にありません」(同じブック内に同名シートがあるのに?)とエラーが出たり、 また、B行から最終列までコピーする際の範囲指定についてもよくわからず、 もっと他に良い方法が無いものかとお手上げ状態です。 どうぞ宜しくお願いいたします。

  • エクセル A列500行に入力された文字列を50行ずつ列換えしたい。

    エクセル2003です。 A列に文字列が500行ほど入っているシートが20シシートほどあります。シート毎にB列からI列の1行から50行までに50行ずつ移動させ1ページに収めたいのですがその方法を教えて下さい。 50行ずつ切り取り、貼付では時間がかかるのでできれば関数で移動させる方法があれば教えてください。前期高齢者のためマクロはできません。よろしく御願いします

  • For Next構文を使ったVBA

    こんにちは、VBAについて質問をさせてください!(>_<) 同じブックにシート「テスト」と「Sheet1」があり、「テスト」にはデータの入力欄、「Sheet1」には「テスト」に入力するためのデータが入っています。「テスト」の入力欄は「Sheet1」のデータの並び順と同じですが、入力したデータ同士に4行3列ずつデータを入力しないセルを作らなくてはなりません。 また、データを入力するセルは「テスト」の5列目8行目=「Sheet1」3列目2行目~「テスト」の20列目8行目=「Sheet1」8列目2行目のように、まず列番号を増やし、列番号が最大になったら行番号が増え、列番号はまた初期値から増えます。したがって、次は「テスト」の5列目9行目=「Sheet1」の3列目3行目~「テスト」の20列目9行目=「Sheet1」の8列目3行目になります。 上記を踏まえてVBAを作成してみたのですが、このままではi,j,k,l全ての値がNextで増えてしまいます。Ifを使ったりするのかと色々ネットで調べて考えてみましたが、行き詰まってしまいました。どなたかご教授いただけるととても嬉しいです。説明が長く申し訳ないです、わかりづらければ補足させていただくので、おっしゃってください! Dim i, j, k, l As Integer For i = 5 To 20 Step 3 'シート「テスト」の列 For j = 8 To 116 Step 4 'シート「テスト」の行 For k = 3 To 8 'シート「Sheet1」の列 For l = 2 To 39 'シート「Sheet1」の行 Cells(j, i).Value = Sheets("Sheet1").Cells(l, k).Value Next l Next k Next j Next i

  • マクロ 選択範囲及び切り取り&貼り付けについて教えてください。

    (1)sheet1のA列からH列までデータが入っています。 (2)検索機能を使って発見されたセル(検索されるデータはA列にのみ入っています。)からA~H列のデータが入っている最終行まで選択し切り取り。(場合によっては検索を2回してから選択範囲を決めます) (3)sheet2のA2へ貼り付け (1)~(3)の作業をsheet7まで繰り返します。 マクロの記録を行うと選択範囲が指定され別のデータの時にも前と同じ範囲しか指定できません。 例 sheet1検索ち→発見されたセル(この場合A3)からA~H列の最終行(A9)選択及び切り取り→sheet2のA2へ貼り付け→検索ち→文字が縦に2回続いている場合は次を検索→発見されたセル(この場合A6)からA~H列の最終行(H8)選択及び切り取り→sheet3のA2へ貼り付け sheet1   →     sheet2   →   sheet3  ABCDEHGH    ABCDEHGH  ABCDEHGH 1ち あいうえおか  1          1 2ひあいう えおか 2ちあい い うえ 2ちあいうえお か 3ちあい い うえ  3 あいうえお か 3ひあいうえおかき 4ゆあいうえお か 4ちあいうおかき  4ちあ うえおき  5ちあいうおかき  5ゆあいうえおかき  6 あいうえおかき 6ちあいうえお か  7ちあいうえお か 7ひあいうえおかき 8ひあいうえおかき 8ちあ うえおき  9ちあ うえおき   *実際のデータは2000行ぐらいデータが入っています。 *見えずらくてすみません。

  • 【Excel VBA】ThisWorkbook モジュールのマクロ

    Excel2003を使用しています。 39枚のシートから成るBook1のThisWorkbook モジュールに、C列に“○月計”と入力されたら、その行のE列、F列、G列へ数式を入力するコードを書いています。 現在は、それぞれのシート(39枚のシートのうち3枚を除く36枚)のC列最終行から2行下のセルへ“○月計”と手入力していますが、マクロで“○月計”と入力されるようにすれば、ThisWorkbook モジュールに書いているコードも実行されて、数式の入力までマクロで処理できるのかな?と思い、試しに、36枚それぞれシートのC列最終行から2行下のセルへ“○月計”と入力されるようコードを書いてみました。 …が、そうではないのか、それぞれのシートのC列最終行から2行下のセルへ“○月計”と入力されるものの、E列、F列、G列へ数式は入力されません。 せっかくなので、できることなら数式の入力までマクロで処理したいのですが、どのようにしたらThisWorkbook モジュールに書いているコードまで実行されるのでしょうか? よろしくお願いします。

  • エクセルで入力済みのセルのみ見つけて・・

    エクセルで入力済みのセルだけを見つけ出して、 指定した場所に並べる作業をマクロで1発で出来るようにしたいのですが、その方法を教えてください。 シートが37シートあります。(sheetA1~sheetA12,sheetB1~sheetB12,sheetC1~sheetC12,sheet37) それぞれセルC5からC20まで数値が入っていますが、 最終行はC20とは限りません。(sheet37はまとめるためのシートで空白) C15が最終行の場合もあれば、C18が最終行の場合もあります。 各シートそれぞれ最終行が違います。(列は同じですスタートもC5です) 各シートのC列の入力済みのセルの数値をsheet37のB1セルから順番に縦に並べたいのです。 A,B,Cのシート順にC列に入力された数値を縦に並べます。 空白は無しで詰めて並べます。 これを1回の作業でできるマクロを教えてください。 それから入力済みの最終行を見つけ出すマクロの部分を表示して頂けるとありがたいです。 宜しくお願いします。

  • 検索後、行を抽出するマクロ←を発展させたい

    検索後、行を抽出するマクロを使いたいのですが、 非常に近い質問がありましたので、それを基に質問させていただきます。 (まったく違うマクロになっても構いません。) 下記URLの【merlionXX様】の回答されたマクロを使用しますと、 A列のみを検索対象としています。 http://okwave.jp/qa4730673.html 私が検索したい範囲がA列からI列まであります。 その中で、任意の語句を検索すると、 sheet2(←検索結果と名前のシートにしたい)のA2から、 検索結果を表示したいのですが、どのように記述を変えたらできますか。 なぜ、A2からの表示にしたいかと言うと、 A1からI1までは、各項目名を入力しておきたいからです。 どうか皆様の知恵を貸していただけないでしょうか。 宜しくお願い申し上げます。

  • I列でHITさせたデータのみ、別のシートにコピーしたい。(マクロ)

    エクセルでのご教授をお願いします。 シート名「データ」のA3からM159までに、データが入力済みです。 ただし、今後、列方向・行方向ともにデータが増える可能性があります。 I列の入力値は、現在、「1・2・3・4」のどれかです。 今後、「5・6」と増えてゆく可能性もありますが、とりあえずそれは後ほど考えます。 やりたいことですが、 I列のデータが「1」だけのものをまず抽出し、 抽出されたデータの、A列・B列・C列・H列・J列・K列・L列のみを、シート名「1」の3行目以降にコピーしたいのです。 同じくI列のデータが「2」だけのものを抽出し、 抽出されたデータの、A列・B列・C列・H列・J列・K列・L列のみを、シート名「2」の3行目以降にコピーしたいのです。 これをI列に入力されるデータそれぞれに(現在は4まで)をマクロで作成したいのです。 そして、私ではどうしても解決できなかったことなのですが、 例えば「1」シートの最終データの次の行に、集計欄として、データが何件あるかを数えたいのです。 その場合、I列のデータがそれぞれのデータごとに何件あるかが分からないために、どの行に集計欄を作成しておけば良いのか、どうやって判断させたら良いのでしょうか。 申し上げていることを理解していただけておりますでしょうか。 もし意味不明な箇所がございましたら、補足で尋ねていただけると助かります。 よろしくお願いいたします。