• ベストアンサー

セルを斜めに選択してカットする

Excel2010を使っています。 セルを斜めに選択してカットしたいのですが、 セルの数が少ない時には手動でやれば良いのですが 数が多くなると大変な作業になります。 簡単に斜め選択できる方法があれば教えてください。 オートシェイプで直角三角形をAltキー押しながら作成して その下のセルをカットするみたいな機能はありませんよね?? マクロ使うしかないでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

斜めに「どの部分(上?下?)を」操作したいのか不明ですが。 また、具体的に「どこまで斜め(対角線にかかったセル)」を対象にしたいのかも曖昧です。 作成例: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける Sub macro1()  Dim h As Range  Dim x0 As Double, x1 As Double  Dim y0 As Double, y1 As Double  Dim res As Range  if selection.areas.count > 1 then exit sub  if selection.columns.count = 1 then exit sub  With Selection.Cells(1)   x0 = .Left + .Width   y0 = .Top  End With  With Selection.Cells(Selection.Cells.Count)   x1 = .Left + .Width   y1 = .Top  End With  Set res = Selection.Cells(1)  For Each h In Selection  If h.Top >= (y1 - y0) * (h.Left + h.Width - x0) / (x1 - x0) + y0 Then   Set res = Union(res, h)  End If  Next  res.Select End Sub ファイルメニューから終了してエクセルに戻る シート上で「斜めに」セル範囲を選択する とりあえず矩形上に選択される その状態からALT+F8を押し、マクロを実行する。 #作り直しはしませんので、「実は違ってました。こーでした」な時はご自分で工夫してみて下さい。

warewared
質問者

お礼

ありがとうございます。 ずばり、所望通りのことができました。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.2です。 >試してみたのですが >右クリックしても何も起こらないのですが・・・・ (1)シートモジュールになっているのでしょうか? (2)シートモジュールになっていて「何も起こらない」というコトであれば 範囲指定後、その選択されている範囲内で右クリックをしているかどうか? 他の場所で右クリックすると何も変化ありません。 ↓の画像はB5~B10セルを範囲指定 → 範囲しているセル内で右クリック これで右側のように選択されます。 前回書いたように1列のみ選択 → 右クリックしてみてください。 当方もExcel2010で前回のコードをシートモジュールとしてコピー&ペーストしてやってみると ちゃんと↓のように選択できました。 ※ No.3さんの方法とは異なり、1セルずつずらして選択しています。 ※ すでに解決済みのようですので、参考程度で・・・m(_ _)m

warewared
質問者

お礼

ありがとうございます。 できました。 範囲指定したい行数の1列だけを範囲指定 を 範囲指定したい行数の1行だけを範囲指定 と勘違いしていました。 ただ、この方法だと選択できるのは行数だけで 選択する列数を選べないですよね・・・?

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! >セルを斜めに選択してカットしたいのですが 具体的な範囲が判らないので、勝手にやってみました。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻り 斜めに範囲指定したい行数の1列だけを範囲指定 → 右クリックしてみてください。 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'この行から Dim i As Long, j As Long, cnt As Long, myRng As Range If Selection(1).Column = Selection(Selection.Count).Column Then Set myRng = Selection(1) For i = Selection(2).Row To Selection(Selection.Count).Row cnt = cnt + 1 For j = Selection(1).Column To Selection(1).Column + cnt Set myRng = Union(myRng, Cells(i, j)) Next j Next i myRng.Select Cancel = True End If End Sub 'この行まで ※ 複数列を範囲指定した場合や2行以上範囲指定していない場合 何の変化もありません。 こんな感じではどうでしょうか?m(_ _)m

warewared
質問者

お礼

ありがとうございます。 試してみたのですが 右クリックしても何も起こらないのですが・・・・ バージョンは2010ですけど、 何が問題でしょうか? No.3の回答でとりあえず解決したのですが 代替案を知っておきたいので一応教えていただけないでしょうか?

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

簡単に斜め選択できる方法はありません。 マクロを使うしかないでしょう。

関連するQ&A