- ベストアンサー
エクセル、選択した行・列の中から部分的に選択解除
エクセル2010です。 例えば、ある行や列の書式設定をまるごと変えたいが、その中に部分的に書式を変えたくないセルがぽつぽつ混ざっているとします。 そういうときに行や列を選択し、書式を変えたくないセルだけを選んで選択解除するということはできませんか? 単純に、マウスで該当のセルをctrl+クリックしても、そこの部分の色は変わるものの選択解除にはなりませんでした。 方法をご存知の方がいらっしゃいましたらご指南いただけますでしょうか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 ご質問の例ですと、 一旦、"ある行や列の書式設定をまるごと変え" その後に、"部分的に書式を変えたくないセル"を選択して書式を戻す、 という方法が、当たり前のようでいて、最短手数になる場合が多いです。 または、"部分的に書式を変えたいセル"を Ctrlキーを押したまま複数同時に選択して"書式設定をまるごと変え"る という方法が優る場合もあるでしょう。 無いものは無いなりに、色々と手だてを心得ておいて工夫することになると思います。 以下のURLを参考にしてみてください。 「エクセルでの選択範囲の追加について。」 http://okwave.jp/qa/q5746178.html ショートカットキーの使い方とかは、知って置くだけで能率が上がるとは思います。 無いのなら作ってしまえ、というトライも幾つかある訳で、、、。 (因みにリンク先私の回答No.5中の一部リンク切れについて補足 【E03M121 切り取り又はコピーされたセル範囲を取得する 】 http://www2.aqua-r.tepm.jp/~kmado/kvba.htm ) 「選択範囲の部分解除」だけで良ければ、VBAで、比較的簡易に対応可能です。 以下、上記リンク先No.5を元に(コピーモード対策を省略し)より簡略化し、 xl2007以降でも、そのまま試せるように書き直したものです。 日頃私が使っているものと殆ど同じものです。 もし、試し方が解らないとか、試した上ですべてのExcelブックで機能させたいとか、 他にも、相談あれば補足欄にでも書いてみてください。 ' XL2000、2003、2007、2010にて動作確認。 ' 新規の標準モジュール に =この行から=~=この行まで=、全文(過不足なく!! ) コピペ ' Auto_Openを実行してショートカット(Ctrl + Shift + q)を設定。 ' ブックを保存したらば、以降、Ctrl + Shift + q キーで機能を呼び出せます。 ' ' 標準モジュール ' ' ===========この行から========== Option Explicit Option Private Module DefStr S: DefLng N Const S_SHORTCUT = "^+q" ' ' ------------------------------- Sub Auto_Open() Application.OnKey S_SHORTCUT, "CullAreas" End Sub ' ' ------------------------------- Sub Auto_Close() Application.OnKey S_SHORTCUT End Sub ' ' ------------------------------- ' ' 選択範囲の部分解除 ... Ctrl + Shift + q で動作 Sub CullAreas() Const S_TTL = "選択セル範囲の部分解除" Dim vCull, r As Range, rPos As Range, rRet As Range Dim sTmp, sRef ' As String Dim nCCpM, nWR, nWC, nTop, nLeft, nBottom, nRight ' As Long If Not TypeName(Selection) Like "Range" Then Exit Sub With Selection If .Count = 1 Then MsgBox "単一セルには使えません", 64, S_TTL: Exit Sub sTmp = .Areas(.Areas.Count).Address End With With Application Do vCull = VBA.Array(.InputBox("選択解除するセル(最大4領域)を" _ & vbLf & "Ctrlキーを押したまま、または,(カンマ)区切りで選択して OK" _ , S_TTL, sTmp, , , , , 8)) If Not TypeName(vCull(0)) Like "Range" Then MsgBox "キャンセルされました", 64, S_TTL Exit Sub ElseIf vCull(0).Areas.Count > 4 Then MsgBox "解除指定できるのは 一度に 4つ 迄の領域", 48, S_TTL Else Exit Do End If Loop nWR = .Rows.Count: nWC = .Columns.Count For Each r In vCull(0).Areas With r nTop = .Row: nLeft = .Column With .Cells(.Cells.Count) nBottom = .Row: nRight = .Column End With End With sTmp = Empty If nTop > 1 Then sTmp = sTmp & ",R1:R" & nTop - 1 If nLeft > 1 Then sTmp = sTmp & ",R" & nTop & "C1:R" & nWR & "C" & nLeft - 1 If nBottom < nWR Then sTmp = sTmp & ",R" & nBottom + 1 & "C" & nLeft & ":R" & nWR & "C" & nRight If nRight < nWC Then sTmp = sTmp & ",R" & nTop & "C" & nRight + 1 & ":R" & nWR & "C" & nWC If sTmp <> "" Then sTmp = Mid$(sTmp, 2) sTmp = .ConvertFormula(sTmp, xlR1C1, xlA1, xlRelative) sRef = sRef & " (" & sTmp & ")" End If Next r If sRef <> "" Then Set rPos = Range(Trim$(sRef)) If Not rPos Is Nothing Then Set rRet = .Intersect(Selection, rPos) End With ' ' <<< With Application ... If Not rRet Is Nothing Then rRet.Select Set rPos = Nothing: Set rRet = Nothing: vCull = Empty End Sub ' ' ------------------------------- ' ' ===========この行まで==========
その他の回答 (2)
- bunjii
- ベストアンサー率43% (3589/8249)
>そういうときに行や列を選択し、書式を変えたくないセルだけを選んで選択解除するということはできませんか? 最初から飛び飛びに選択することはできますが選択したセルの中から部分的に選択解除することはできないようです。
お礼
ありがとうございます。やはりできないのですか・・・(@_@;) エクセルを勉強し始めて、その可能性の大きさに日々驚嘆しているのですが、意外にもそういう機能を装備していないとは逆に驚きです。 けっこうこういう選択をしたいケースって、多いと思うんですけどねー・・・
- 19318k
- ベストアンサー率21% (11/51)
こんにちは 必要でないセルを選択して、セルの削除では・・・ないかな?
補足
セルを削除するとセルが無くなってしまいます。 書式設定を変えたくないセルだけを、選択から外す方法を質問しています。
お礼
ありがとうございます。 仰る通り今までは一度ざっくりと書式を変更してから、戻したい部分をしこしこと戻していたのですが、その部分部分で複雑な設定をしてあったりすると、完全に戻しきれなかったりしました。 また、飛ばしたいセルを除けてctrlを押しながら選択範囲をツギハギしていくのもいまひとつ効率が悪く、どちらも精度や効率面から、もう少し良い方法はないかといろいろ調べていました。 「無いものは無いなりに、色々と手だてを心得ておいて工夫する」というのは尤もなのですが、パワーポイントやワードなどの使い勝手からすると、なぜエクセルではマイナス選択ができないのか、どうしても疑問でした。 マクロを教えていただいてありがとうございます。 まだ実行はしていませんが、帰ってから試してみたいと思います。