カット&ペーストのマクロで複数のセルを連続したまま移動させる方法
- Excelのカット&ペーストのマクロで複数の連続したセルを移動させる方法について解説します。
- 選択した複数の連続したセルをカット&ペーストすると、セルの連続性が失われてしまいます。
- そのため、選択したセルの連続性を維持したまま移動させるためには、特定の方法を使用する必要があります。
- ベストアンサー
カット&ペーストのマクロ(エクセル)
Sub test() R = Selection.Row C = Selection.Column Range(Cells(R , C), Cells(R + 100, C)).Select Selection.Cut Cells(R + 1, C).Select ActiveSheet.Paste End Sub 上記マクロは、アクティブセルから100行下までの範囲で"切り取り"を実行し、一行下のセルに"貼付け"を行います。 上記の処理を、複数のセルが選択されている時は、複数回カット&ペーストが行われるように変更したいのですが。 (選択されるセルは必ず同一列内の連番になります) (選択内で一番上のセルとその上のセルは連続したままになり、選択内で一番下のセルとその下のセルも同様になります) A1 a A2 b A3 c A4 d A5 e A6 f A7 g A8 h A9 i 上記でA3:A6を選択して実行すると、以下の結果になります。 A1 a A2 b A3 c A4 A5 d A6 A7 e A8 A9 f A10 g A11 h A12 i 最初のマクロをどのように変えればいいでしょうか?
- kayonon
- お礼率100% (22/22)
- オフィス系ソフト
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
意図が良く解らんのですが、これではダメ? Sub test1() With Selection For i = .Row + .Rows.Count - 1 To .Row + 1 Step -1 Cells(i, .Column).Insert xlShiftDown Next i End With End Sub
関連するQ&A
- エクセルのマクロ
Sub test() x = Selection.Row y = Selection.Column z = Selection.Columns.count Range(Cells(x, y), Cells(x, y + z - 2)).Select Selection.ClearContents End Sub 上記マクロは、同一行の連続するセルを二つ以上選択状態にして実行すると、範囲内の最も右にあるセルの値のみが残って他のセルの値は全て消去されます。 上記マクロを、複数のセレクションに対して対応できるようにするには、どうすればいいでしょうか? 例えば、c1~f1、d3~h3、e10~g10を選択して実行すると、f1とh3とg10の値のみ残って他の値は消えるということです。
- ベストアンサー
- オフィス系ソフト
- カット&ペーストのマクロ(エクセル)
Sub test1() Selection.Cut Destination:=Selection.Offset(0, -1) Selection.CurrentRegion.Select End Sub Sub test2() Selection.Cut Destination:=Selection.Offset(0, 1) Selection.CurrentRegion.Select End Sub K1:N1が選択状態になっている時にtest1を実行すると、4つのセルが一セル分だけ左に移動します。 test1を連続してもう一回実行すると二セル分だけ左に移動します。連続して3回だと三セル分です。 が、test2だと、test1と同様に実行回数分だけ全体を右に移動させることができません。どうしてでしょうか? 実行回数分だけ全体を右に移動させるには、どういった記述が必要でしょうか?
- ベストアンサー
- オフィス系ソフト
- (マクロ)カット&ペーストを列毎に繰り返したい
下のように、A列から50列目までデータが入力されています。 各列、データは上から順に詰まっている状態です。 C列のように1つもデータが入力されていない列もあります。 ------------------------------------------ A列 B列 C列 D列 ・・・ Z001 Z003 Z004 Z002 Z005 ------------------------------------------ これを、「B列から順にデータをカットして、A列最終行の下にペーストする」という作業を、各列毎に50列目まで繰り返したいと思っています。 完成イメージは下記のようになります。 ------------------------------------------ A列 B列 C列 D列 ・・・ Z001 Z002 Z003 Z004 Z005 ------------------------------------------ 下記のようにマクロを組みましたが、無限ループになっているのか、強制終了となってしまいます。 どういうふうにマクロを組めばいいのでしょうか? 宜しくご教授お願いいたします。 Sub ADD() Dim i, j As Long For j = 2 To 50 '列番号指定 'B列1行目から順にセルが空白でなければカットする。 i = 1 Do While Cells(i, j).Value <> Empty Cells(i, j).Select Selection.Cut 'A列の最終行の1つ下の行に貼り付ける。。 Range("A1").Select Range(Selection, Selection.End(xlDown).Offset(1, 0)).Select ActiveSheet.Paste i = i + 1 Loop Next End Sub
- ベストアンサー
- オフィス系ソフト
- エクセル マクロ:文字変更
教えてください。 sheet5にデータがあります。 マクロを実行すると、一番右の列のセルに○があると●と書き換える 一番右の列のセルに△があると▲と書き換えるコードを作成しています。 下記のコードでは時間がかかってしまいます。 省略 If Sheets("sheet5").Cells(r, cmax).Value = "○" Then Sheets("sheet5").Cells(r, cmax).Value = "●" 省略 AutoFilterを使用してマクロを作成しましたが、列に○と△が両方無いと 範囲指定したセルがすべて▲となってしまいます。 下記コードをどのように手直ししたらよいのか教えて頂けないでしょうか。 よろしくお願いします。 Sub 文字変更() Dim c As Integer Dim cmax As Integer Dim rmax As Long With Sheets("sheet5") rmax = .Range("A3").End(xlDown).Row cmax = .Range("A3").End(xlToRight).Column .Rows("1:1").Select Selection.AutoFilter For c = 2 To cmax Selection.AutoFilter Field:=c, Criteria1:="○" .Cells(1, c).Offset(1, 0).Select .Range(Selection, Cells(rmax, c)).Value = "●" Selection.AutoFilter Field:=c, Criteria1:="△" .Cells(1, c).Offset(1, 0).Select .Range(Selection, Cells(rmax, c)).Value = "▲" Selection.AutoFilter Field:=c Next c End With Selection.AutoFilter End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロで打ち込んだ数字のより分けをしたいと思い下記のコードで
エクセルのマクロで打ち込んだ数字のより分けをしたいと思い下記のコードで実行してみたのですが、空白セルを選択したところで砂時計のままになりフリーズしてしまいます。どこが間違っているのでしょうか? ちなみに手動で空白選択部分を右クリック→削除(上方)としてもやはり固まってしまいます。やりたいのはA列にランダムに打ち込んだ数字の5千番台、9千番台をB列、C列に移して空白セルを埋めると言うものです。手動でもだめと言うことは何か別の理由も考えられますでしょうか?使用PCはWIN-XPです。 Sub Sorting1() Dim R As Long For R = 1 To Cells(Rows.Count, "A").End(xlUp).Row If Cells(R, "A").Value >= 5000 And Cells(R, "A").Value <= 5999 Then Cells(R, "B").Value = Cells(R, "A").Value Cells(R, "A").Value = "" End If If Cells(R, "A").Value >= 9000 And Cells(R, "A").Value <= 9999 Then Cells(R, "C").Value = Cells(R, "A").Value Cells(R, "A").Value = "" End If Next R On Error Resume Next Range("A1:C10000").Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.Delete Shift:=xlUp Range("A1").Select End Sub
- ベストアンサー
- Visual Basic
- エクセルのマクロについて
エクセルのマクロについて 領域の範囲選択→貼り付けの繰り返し処理をループで考えています。 領域の範囲選択し、貼り付け処理をマクロの自動記録で、出してみました。 Sub Macro1() Range("E6:G12").Select Selection.Copy Range("E17").Select ActiveSheet.Paste Application.CommandBars("Stop Recording").Visible = False End Sub この時に、「Range("E17").Select」の命令は「Cells」関数に置き換えられるのですが、「Range("E6:G12").Select」のように複数のセルの領域選択をする際に、「Cells」関数ではできないのでしょうか。 「Cells」関数を使えば、行列を数値にし、変数を使えば、LoopかFor命令で繰り返し処理ができるのですが、わかる方、解答ください。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCELのマクロで複数選択したとき
選択したセルに一つ左側の文字列をふりがなとして表示させる方法をマクロで 簡単に実行させたいのですが複数のセルを選択するとエラーになってしまいます。 Sub test() Selection.Characters.PhoneticCharacters = Selection.Offset(0, -1) Selection.SetPhonetic Selection.Phonetics.Visible = True End Sub マクロはさきほど調べたばかりでほとんど理解できていません。おそらく2行目のSelection.Offset(0, -1)の部分がエラーの原因かと思うのですが下記のような表現ができるマクロを教えて下さい。 B1~B10を選択してるときマクロを実行するとA1~A10の文字列をB1~B10にふりがなの文字になる。 * B1にはA1、B2にはA2の文字列とがふりがなになるようにしたい。 マクロに詳しい方よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- マクロを実行するとフリーズしてしまう。
マクロを実行するとフリーズしてしまいます。 パソコンが原因なのでしょうか? マクロは Sub 抽出() ' '「貼り付け」シートを'一度全てクリアする Sheets("貼り付け").Select Cells.Select Selection.Clear '「元」シートを選択 Sheets("元").Select 'フィルタかけなおし Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter '’抽出前「*」選択 Selection.AutoFilter Field:=1, Criteria1:="~*" '全て選択してコピー Cells.Select Application.CutCopyMode = False Selection.Copy '「元」を貼り付ける Sheets("貼り付け").Select Cells.Select ActiveSheet.Paste 'フォントを「9」 With Selection.Font .Size = 9 End With End Sub です。 パソコンのスペックは celeron® cpu3.20GHz 3.19GHz 1GB RAM です。 最近VBAを覚え始めたばかりな者です。 仕事のデータではもっと複雑なマクロを実行していてもパソコンはなんともないので マクロに原因があるのではなくパソコンに原因があるのでしょうか? (上記のマクロを実行しているのは自宅のPCです) よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 削除のマクロ(エクセル)
Sub test() Selection.Delete Selection.Interior.ColorIndex = xlNone Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Selection.ClearContents End Sub 上記マクロは、まず図形が選択状態にある時はそれを削除します。 また、セルが選択状態にある時は、選択範囲内の文字を消し、罫線を消し、塗りつぶしの色を消します。 上記マクロを実行すると不具合が生じます。 選択範囲外のデータが消えたり、選択範囲外のセルが移動したりしてしまいます。 c5 d5 e5 f5 c6 d6 e6 f6 c7 d7 e7 f7 c8 d8 e8 f8 上記の全てのセルにデータが入力されている場合、d6:e7を選択してマクロを実行すると、d6:e8のデータが消えてしまいます。 d6:d7を選択してマクロを実行すると、d6:e7のデータが消える上にf6:f7が一セル分左に移動してしまいます。 マクロ内の"Selection.Delete"をコメントにして実行すると不具合は生じることなく、選択範囲内のデータだけに作用させることができます。 ただ、"Selection.Delete"を外すと、「図形が選択されている時は図形を削除する」ができなくなります。 どのようにマクロを修正すれば、セルのデータと図形のそれぞれを不具合なく削除させることができるでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
うまくいきました。 有難うございました。