• ベストアンサー

エクセルでオ-トフィルと

いつも御世話になります Cells(t + 1, 5)のセルに FormulaR1C1 = "=IF(RC[-4]="""","""",VLOOKUP(RC[-4],漁師名!R2C3:R300C4,2,FALSE))" VLOOKUPが入ってます セルから50行コピ-する時は Selection.AutoFillか Copy Paste か、手動でやると一緒のように 思うのですが一般的にはどちらがいいのですか 初心者なのでわかりやすくお願いいたします いつもすみません

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

回答がないようなので、書いてみます。 >Selection.AutoFillか Copy Paste か、手動でやると一緒のように思うのですが Copy→Pasteについて、 Pasteメソッドを使用した場合は、クリップボードを経由して貼り付けられていて、コピー元に算式があれば貼り付け先範囲の形状で、算式のセル参照が調整されます。($付きのセル参照はそのまま)  Selection.AutoFillについて、  基準となるセル.AutoFill(書き込み先セル範囲, Type) のように書きますが、  TypeをxlFillDefault、xlFillCopy、(省略も)にすると、元のセルの算式が変化します。   このような仕様のため、『手動でやると一緒のように思うのですが』となるのでしょう。 結果はいっしょになります。   >・・・『一般的にはどちらがいいのですか』 分かりません。 Copy-SpecialPasteメソッドなどもあり、AutoFillにもTypeの指定があるので、色々な使い方があります。状況によって使い分けています。 >セルから50行コピ-する時は・・・ 個人的には、連続範囲内に算式を登録する時は、コピーやフィルはあまり使いません。 例えば、E5セルに『=C5+D5』と入れて、これを『E5:E20』にコピーしたいときは、   Range("E5:E20").FormulaR1C1 = "=RC[-2]+RC[-1]" としてしまいます。シート上で入力するとき、矩形範囲を選択して、アクティブセルのみに入力して『Ctrl+Return』で一括登録できるのと同様です。(コードでの書き方) また、コードを使って、シートに算式を書き込むことは極力避けています。書き込み先を間違えないようにしたり、修正に気を使う必要があるからです。 それから、VloopUpもあまり使わない(沢山使わない)ようにしています。数多く使うと動作が鈍くなるし、コードからVloopUpを使う場合、検索結果をセルに書くほうが軽くなるように思います。

hajihaji
質問者

お礼

いつもありがとうございます わかりやすく助かります

関連するQ&A

  • EXCELマクロで左列に値のある行まで選択

    EXCELのマクロの記録を利用して簡単なマクロを作りたいのですが、 やりたいことは、表の最上部のセルにVLOOKUP関数を設定し、 フィルハンドルでWクリックするように表の最下部までコピーしたいのですが、 マクロの記録では、貼り付けする先のセルが固定されてしまい、 表の行数が変動する場合はそのまま使えません。 左列に値のあるセルを判断してその行番号までを選択できれば解決するのですが、 お詳しいかたお教えください。 ちなみにマクロの記録の構文では <フィルハンドルでクリックする場合> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'10FY'!R2C1:R1321C2,2,0)" Selection.AutoFill Destination:=Range("H3:H27") Range("H3:H27").Select End Sub <範囲選択しコピー貼り付けする場合> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'10FY'!R2C1:R1321C2,2,0)" Selection.Copy Range("H4:H27").Select ActiveSheet.Paste End Sub

  • エクセル Do~LoopかFor Nextで・・・・

    いつもお世話になります。 記録マクロで行った部分です Columns("R:R").Select Selection.Insert Shift:=xlToRight Range("R2").Select ActiveCell.FormulaR1C1 = "=IF((RC[-4]=1),((RIGHT(RC[-1],8)*1)),(IF((RC[-4]>R[-1]C[-4]),(RIGHT(RC[-1],8))-(RIGHT(R[-1]C[-1],8)),(R[-1]C))))" Selection.NumberFormatLocal = "[$-F400]h:mm:ss AM/PM" Selection.AutoFill Destination:=Range("R2:R65536") Range("R2:R65536").Select Columns("R:R").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False これでいきますと、R列全てに対して計算してしまうので 隣が入力されている所までを判断して次の処理に入りたいと思っているのですが、いまいち分からないのです。 どうかよろしくお願いします。

  • サッカーもいいけどマクロもねっ

    多分わかる人には簡単な内容だと思いますが・・ Rows("1:1").Select Range("D1").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!R1C1:R1200C2,2,FALSE)" Range("D1").Select Selection.Copy Application.Goto Reference:="R2C4:R65000C4" ActiveSheet.Paste Application.CutCopyMode = False Cells.Select Range("A2").Activate Selection.AutoFilter Selection.AutoFilter Field:=4, Criteria1:="0" End Sub これは「Sheet1にデーター」を入れ 「Sheet2のA列」に調べたい項目を打ち込み Sheet1でマクロの実行をし Sheet1の上の方に調べてる項目が出てくるマクロです 質問は「Sheet2のA列」に調べる項目を打ち込むのではなく 「Sheet2のB列」打ち込みを変更したいのです どこを変えれば良いのでしょうか? 又、A列には「ABC123」と打っているのですが「abc123」の様に小文字にも対応出来る方法はありますか?

  • エクセルマクロでの参照方法の変更

    久々にエクセルのマクロで手直しが必要になりました。 色々調べましたが、判らなくて質問致します。 以下のマクロでAJ6に検索キーを作成しています。 Range("C5").Select 行 = Selection.End(xlDown).Row Range("AJ6").Select ActiveCell.FormulaR1C1 = "=RC[-35]&"" ""&RC[-34]&"" ""&RC[-33]&"" ""&RC[-32]" Selection.AutoFill Destination:=Range("AJ6:AJ" & 行) Range(Selection, Selection.End(xlDown)).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False Range("A5").Select の様にRC[-35]ではなく$A6の様に絶対参照?にしたいのです 理由として間の列が追加になるたびにRC[-35]の数値の増減しないといけないので手間が掛かります。 列を増やしても$A6の様に固定ってできないでしょうか?

  • エクセルVBAの修正をお願いいたします。

    下記VBAをご教授受けて何とか作りましたが、一行指定で作成したのですが、その時によりデータ数にばらつきがありますので、現状データがあるセルだけを拾ってきてデータのあるなしを、JのセルとKのセルに2種類表示するように作成したつもりですが、データがないセルにも延々と Jのセルには 1040272 Kのセルには * が表示されますのでデータが現状ないセルには何も表示されないようにしたいと思います。 自分でいろいろ調べながらしてみるのですが埒が明かない状態になっておりますので、なにとぞお助け、ご教授をお願いいたします。 わかりにくい説明で申し訳ございませんがなにとぞよろしくお願いいたします。 Range("H2").Select ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-5],RC[-4])" Selection.AutoFill Destination:=Range("H2:H10000") Range("H2:H10000").Select Columns("H:H").Select Selection.Copy Columns("I:I").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.Replace what:="-", Replacement:="", lookat:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace what:="_", Replacement:="", lookat:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Sheets("登録商品リスト").Select Columns("C:C").Select Application.CutCopyMode = False Selection.Copy Columns("E:E").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.Replace what:="_", Replacement:="", lookat:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace what:="-", Replacement:="", lookat:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("F2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=UPPER(RC[-1])" Selection.AutoFill Destination:=Range("F2:F10000") Range("F:F").Select Columns("F:F").Select Selection.Copy Columns("G:G").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet2").Select Range("J2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=COUNTIFS(登録商品リスト!C[-3],C[-1])" Selection.AutoFill Destination:=Range("J2:J1500") Range("J:J").Select Dim i As Long, endRow As Long, str As String, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("登録商品リスト") Set wS2 = Worksheets("Sheet2") endRow = wS2.Cells(Rows.Count, "K").End(xlUp).Row Application.ScreenUpdating = False If endRow > 1 Then Range(wS2.Cells(2, "K"), wS2.Cells(endRow, "K")).ClearContents End If For i = 2 To wS2.Cells(Rows.Count, "I").End(xlUp).Row str = Left(wS2.Cells(i, "I"), 5) Set c = wS1.Range("G:G").Find(what:=str, LookIn:=xlValues, lookat:=xlPart) If Not c Is Nothing Then wS2.Cells(i, "K") = "*" End If Next i Application.ScreenUpdating = True End Sub

  • Excel VBA 計算範囲の変更について教えてください。

    こんばんは。とても困っています。 下記のような表で=A1&B1&C1の計算式を入れ、A1とB1を絶対参照にして$A$1&$B$1&C1としてD3までオートフィルをかけます。 そしてD4は =$A$4&$B$4&C4のように絶対参照しているセルを変更したいのです。たくさんありすぎて参照する範囲を変更するのにとても大変な思いをしています。VBAでどのようにすればよいのか教えてください。   |A    B   C     D ------------------------------------- 1| 1T  11L   A    1T11LA (=$A$1&$B$1&C1) 2|          B    1T11LB (=$A$1&$B$1&C2) 3|          C    1T11LC (=$A$1&$B$1&C3) 4| 2T  20L   A    2T20LA (=$A$4&$B$4&C4) 5|          B     2T20LB (=$A$4&$B$4&C5) 6|          C    2T20LC (=$A$4&$B$4&C6) 7| 3T  31M   A    3T31MA (=$A$7&$B$7&C7) 8|          B     3T31MB (=$A$7&$B$7&C8) マクロで記録させたらところ下記のようになりました。 Sub 4行置きに参照範囲を変更する() Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=RC[-3]&RC[-2]&RC[-1]" Range("D1").Select ActiveCell.FormulaR1C1 = "=R1C1&R1C2&RC[-1]" Range("D1").Select Selection.AutoFill Destination:=Range("D1:D3"), Type:=xlFillDefault Range("D1:D3").Select Range("D4").Select ActiveCell.FormulaR1C1 = "=R4C1&R4C2&RC[-1]" Range("D4").Select Selection.AutoFill Destination:=Range("D4:D6"), Type:=xlFillDefault Range("D4:D6").Select Range("D7").Select ActiveCell.FormulaR1C1 = "=R7C1&R7C2&RC[-1]" Range("D7").Select Selection.AutoFill Destination:=Range("D7:D9"), Type:=xlFillDefault Range("D7:D9").Select End Sub ◎初心者なのでVBAにたくさんコメントを入れていただくと助かります。 宜しくお願い致します。

  • VBAでVlookupを使って

    いつもお世話になっています。 VBAで現場検索登録シートと言うところに 一覧シートからVlookupを使って 表示させようと思い作りました。 エラーも何もでません。 ただ、表示されるものがちゃんと検索されるものと まったくされないものがあります。 Vlookupはマクロの記録から作ったものです。 原因がわかりません。 よろしくお願い致します。 '検索ボタン Private Sub CommandButton6_Click() '送り方 Range("C4:D4").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C5,一覧!R5C1:R2000C54,22,FALSE)" Selection.Value = Selection.Value '封筒 Range("C5:D5").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C5,一覧!R5C1:R2000C54,23,FALSE)" Selection.Value = Selection.Value '得意先名ふりがな Range("C6:F6").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C5,一覧!R5C1:R2000C54,6,FALSE)" Selection.Value = Selection.Value '得意先名 Range("C7:F8").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C5,一覧!R5C1:R2000C54,4,FALSE)" Selection.Value = Selection.Value '現場名ふりがな Range("C9:H11").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C5,一覧!R5C1:R2000C54,9,FALSE)" Selection.Value = Selection.Value '現場名 Range("C10:H11").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(R2C5,一覧!R5C1:R2000C54,7,FALSE)" Selection.Value = Selection.Value End Sub エラーも何もなく、ちゃんと動くことは動きます。 検索結果が、検索コードによって違うのです。 よろしくお願い致します

  • 文字列を連続で置き換え・・・・?

    マクロを記録したんですが手直しして繰り返しと空白のセル内が見つかった場合 繰り返しを終わらせワードパッドにコピーして保存終了させたいんですがわかりません? 誰か教えてください。 ' ' Macro2 Macro ' マクロ記録日 : 2012/4/21 ユーザー名 : cocoro ' ' Range("E:E").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""#"",RC[-4])" Range("F1").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""$"",RC[-4])" Range("G1").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""&"",RC[-4])" Range("E2").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""#"",RC[-4])" Range("F2").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""$"",RC[-4])" Range("G2").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""&"",RC[-4])" Columns("G:G").Select Selection.Copy Columns("H:H").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Columns("H:H").Select ActiveWindow.SmallScroll Down:=-6 Application.CutCopyMode = False Selection.Copy End Sub

  • エクセルの select case文

    Dim i For i = 1 To 5 Select Case Cells(i, "A") Case "午前" Range("w1").Select Selection.Copy  Cells(i, "C").Select ActiveSheet.Paste Case "午後" Range("x1").Select Selection.Copy Cells(i, "d").Select ActiveSheet.Paste  End Select Next i Dim j For j = 1 To 5 Select Case Cells(j, "A") Case "関東" Range("y1").Select Selection.Copy  Cells(j, "e").Select ActiveSheet.Paste Case "関西" Range("z1").Select Selection.Copy Cells(i, "F").Select ActiveSheet.Paste  End Select Next i 毎回皆様にはお世話になっています。 あるセルを参照してその入力結果により 違うセルを貼り付けるマクロを組みました。 参照するセルが複数個(この例だと2セル)あるので それぞれに変数を宣言してfor nextで まわしています。 この内容を変数ひとつだけで すっきりと記述することは可能でしょうか? 参照するセルや判別する内容が増えると 記述が膨大になって マクロが 見にくくなるので 良い方法がありましたら 御教授ねがいます。

  • エクセルマクロで

    いつもお世話になります mythism様に教えていただいた下記マクロについて もう1つ教えていただきたいのですが t = 3 While Cells(t, 3).Value <> "" t = t + 1 Wend If 1 < t Then Range("c3:n" & Trim(Str(t - 1))).Locked = True End If Range("c" & Trim(Str(t)) & ":n" & Trim(Str(t + 99))).Locked = False Range("c" & Trim(Str(t)) & ":n" & Trim(Str(t))).Interior.ColorIndex = 36 最後の行に黄色の塗りつぶしをしてうまくいきました 塗りつぶしの次の行のE列に Range("E19").Select  19行になったとして VLOOKUPをいれたいのですが ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],漁師名!R2C3:R31C4,2,FALSE)" Range("E19").Selectの部分は どうしたらいいでしょうか よろしくお願いいたします

専門家に質問してみよう