- ベストアンサー
セルを斜めに選択してカットする
Excel2010を使っています。 セルを斜めに選択してカットしたいのですが、 セルの数が少ない時には手動でやれば良いのですが 数が多くなると大変な作業になります。 簡単に斜め選択できる方法があれば教えてください。 オートシェイプで直角三角形をAltキー押しながら作成して その下のセルをカットするみたいな機能はありませんよね?? マクロ使うしかないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
斜めに「どの部分(上?下?)を」操作したいのか不明ですが。 また、具体的に「どこまで斜め(対角線にかかったセル)」を対象にしたいのかも曖昧です。 作成例: 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を押し、マクロを実行する。 #作り直しはしませんので、「実は違ってました。こーでした」な時はご自分で工夫してみて下さい。
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
No.2です。 >試してみたのですが >右クリックしても何も起こらないのですが・・・・ (1)シートモジュールになっているのでしょうか? (2)シートモジュールになっていて「何も起こらない」というコトであれば 範囲指定後、その選択されている範囲内で右クリックをしているかどうか? 他の場所で右クリックすると何も変化ありません。 ↓の画像はB5~B10セルを範囲指定 → 範囲しているセル内で右クリック これで右側のように選択されます。 前回書いたように1列のみ選択 → 右クリックしてみてください。 当方もExcel2010で前回のコードをシートモジュールとしてコピー&ペーストしてやってみると ちゃんと↓のように選択できました。 ※ No.3さんの方法とは異なり、1セルずつずらして選択しています。 ※ すでに解決済みのようですので、参考程度で・・・m(_ _)m
お礼
ありがとうございます。 できました。 範囲指定したい行数の1列だけを範囲指定 を 範囲指定したい行数の1行だけを範囲指定 と勘違いしていました。 ただ、この方法だと選択できるのは行数だけで 選択する列数を選べないですよね・・・?
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >セルを斜めに選択してカットしたいのですが 具体的な範囲が判らないので、勝手にやってみました。 画面左下の操作したい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
お礼
ありがとうございます。 試してみたのですが 右クリックしても何も起こらないのですが・・・・ バージョンは2010ですけど、 何が問題でしょうか? No.3の回答でとりあえず解決したのですが 代替案を知っておきたいので一応教えていただけないでしょうか?
- aokii
- ベストアンサー率23% (5210/22062)
簡単に斜め選択できる方法はありません。 マクロを使うしかないでしょう。
お礼
ありがとうございます。 ずばり、所望通りのことができました。