ジメジメする梅雨のお悩み、一挙解決! >>

こんにちは、エクセルに詳しくないので教えてください!

例えば J4~AA38の間のセルを選択した時に、選択したセルのみ値をクリアするにはどうしたら良いでしょうか。

詳しいかた、よろしくお願いいたします。

A 回答 (4件)

No.2・3です。



>J4:AA38はそのままに、H1をクリックしたらH4:H38の値全てをクリアする。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("H1,J4:AA38")) Is Nothing Then Exit Sub
Cancel = True
With Target
If .Row = 1 Then '//←ダブルクリックセルがH1の時//
Range("H4:H38").ClearContents
Else
.ClearContents
End If
End With
End Sub

こんな感じになると思います。m(_ _)m
    • good
    • 0
この回答へのお礼

何度も教えていただき、ありがとうございます。

お陰様で、ばっちり出来ました!

感謝感激!

お礼日時:2017/05/18 04:00

No.2です。



>追加として、応用し、以下のようなコードを入れてみたのですが・・・
複数のダブルクリックイベントなどは共存できません。
範囲をH1~H38とJ4~AA38の範囲限定としたいのですね?

前回のコードを消去し↓のコードに変更してみてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("H1:H38,J4:AA38")) Is Nothing Then Exit Sub
Cancel = True
Target.ClearContents
End Sub

すでにお判りかと思いますが、セル範囲を飛び飛びにしたい場合は
範囲をカンマで区切ります。
もちろん範囲を追加しても構いません。m(_ _)m
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

なるほどです、セル範囲が複数ある場合はカンマで区切れば良いのですね。


それでは、こんな事って出来ますか?

J4:AA38はそのままに、H1をクリックしたらH4:H38の値全てをクリアする。

と言うようなものです。

お手数ですが、お手すきの時にでも教えて頂けませんでしょうか。

よろしくお願いいたします。

お礼日時:2017/05/17 22:40

こんにちは!



>選択したセルのみ値をクリアするには・・・

間違ったセルを選択しても消去されてしまいますので、ダブルクリックした場合に消去ではどうでしょうか?
一例です。シートモジュールにしてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("J4:AA38")) Is Nothing Then Exit Sub
Cancel = True
Target.ClearContents
End Sub

上記コードは1セルずつの操作になります。
選択したセルを一気に消去したい場合はチェンジイベントで対応できると思います。
↓のコードにしてみてください。(同じくシートモジュールです)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
For Each c In Selection
If Not Intersect(c, Range("J4:AA38")) Is Nothing Then
c.ClearContents
End If
Next c
End Sub

※ セルを選択した時点で実行されてしまいます。

※ 極端に広範囲(列全体や行全体など)を選択しないでください。
おそらく「応答なし」になってしまうと思います。m(_ _)m
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ばっちり出来ました。

追加として、応用し、以下のようなコードを入れてみたのですが、名前が適切ではないエラーが出てしまいます。

よろしければ教えて頂けませんでしょうか、よろしくお願いいたします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("H1:H38")) Is Nothing Then Exit Sub
Cancel = True
Target.ClearContents
End Sub

お礼日時:2017/05/17 17:12

名前ボックス または [Ctrl]+[G] で J4:AA38 と入力し[Enter]


[Delete]キー:値の削除
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QExcelを使って行列変換をしたい(大量件数)

先日質問させていただいたものです。
さらなる加工が必要になりました。

例えば、
◆test
aaaaaa
iiiiiiiiiiiii
uuuuu
eeeee
ooooo
◆test2
kaaaaa
kiiiiiiiiiii
kuuuuu
keeeee
kooooo
...

これらのデータを
◆test aaaaaa
    iiiiiiiiiiiiii
    uuuuuu
eeeeee
oooooo
◆test2 kaaaaa
     kiiiiiiiiiii
     kuuuu
     keeeee
     koooooo

に変換はできたのですが、今度は
◆test aaaaaaaa iiiiiiiiiii uuuuuuuuuuu eeeeeee oooooo
◆test2 kaaaaaa kiiiiiiiii kuuuuuuuuu keeeeee koooooooo

のように変換する必要がでてしまいました。

マクロなどで一括で変換できないでしょうか。
当方知識が乏しいため困っております。

先日質問させていただいたものです。
さらなる加工が必要になりました。

例えば、
◆test
aaaaaa
iiiiiiiiiiiii
uuuuu
eeeee
ooooo
◆test2
kaaaaa
kiiiiiiiiiii
kuuuuu
keeeee
kooooo
...

これらのデータを
◆test aaaaaa
    iiiiiiiiiiiiii
    uuuuuu
eeeeee
oooooo
◆test2 kaaaaa
     kiiiiiiiiiii
     kuuuu
     keeeee
     koooooo

に変換はできたのですが、今度は
◆test aaaaaaaa iiiiiiiiiii uuuuuuuuuuu eeeee...続きを読む

Aベストアンサー

こんにちは!

別シートに表示しても良いですか?
元データはSheet1のA列にあり、Sheet2に表示するとします。
標準モジュールにしてください。

Sub Sample1()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "◆") > 0 Then
cnt = cnt + 1
wS.Cells(cnt, "A") = .Cells(i, "A")
Else
wS.Cells(cnt, Columns.Count).End(xlToLeft).Offset(, 1) = .Cells(i, "A")
End If
Next i
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんにちは!

別シートに表示しても良いですか?
元データはSheet1のA列にあり、Sheet2に表示するとします。
標準モジュールにしてください。

Sub Sample1()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "◆") > 0 Then
cnt = cnt + 1
wS.Cells(...続きを読む

Q<エクセル>2つのデータに間違いがないかをチェックしたい

エクセルで入力したデータが、ルールに基づいて正しく入力できているかどうかを確認するような関数はありますか?

例として(添付画像もつけさせていただきました)「粉薬」と「飲薬」を入力し、各容量を入力します。
「粉薬」と「××g」、「飲薬」と「××」は必ずセットで入力されていることが必須です。
もし誤って「粉薬」のときに「××」と入力をした場合に、間違った入力がされていることが表示されるような関数はありますでしょうか?
枠外に〇や×として表示される
セルに色がつく・・・等

色々検索をして試してみたのですがうまくいきません。
VBAなども出てきたのですが私自身知識が全くないことと、作成したデータをあまりエクセルが得意ではない人が使う可能性などを考え、できれば関数などでできれば・・・と考えています。

Aベストアンサー

=IF(NOT(ISERROR(FIND("粉薬",B2))),IF(NOT(ISERROR(FIND("g",C2))),"○","×"),"・")
b2に粉薬の文字がある場合で、かつ、(c2にgの文字がある場合には、○を表示、ない場合は×を表示)、左記以外は・を表示

Qエクセルで大きな写真の一部を切り抜く方法

教えて下さい。
エクセルで個人の写真を貼り付けを
為たいのですが
個人の写真は背景等が
多く写っていて
顔だけを大きく切り取り(拡大して)
(不要な背景等は削除)
四角に調節して貼り付けたいのです。

参考書を読んでもよく分からないので
教えて下さい。

Aベストアンサー

こんばんは!

トリミング、図の調整等々をすべてExcel上でやりたい!というコトでしょうか?
出来なくはないとおもいますが、PC内に入っている「ペイント」を使うのが簡単だと思います。

① プログラム → アクセサリー → 「ペイント」を立ち上げる
(白い部分「キャンバス」は極力小さくしておいた方が良いみたいです。)
② ファイル → 開く → 保存している画像を選択
③ メニュー → 「選択」の上の四角をクリック → 画像の必要部分をトリミング(ドラッグで範囲指定)
④ 選択した画像上で右クリック → コピー → ファイル → 新規 → 貼り付け

以上で必要部分の画像が表示されるはずですので、名前を付けて保存
後はExcelに画像を挿入する訳ですが、そのまま挿入するのではなく
⑤ メニュー → 挿入 → 図形(オートシェイプ)の「四角形」を好みの大きさに挿入
⑥ 図形の塗りつぶし → 図 → 先ほど保存した画像を選択 
(「枠線なし」などは好みによって変更します)

以上が当方が行っているやり方です。m(_ _)m

Q【マクロ】同一フォルダ内の複数ブックの複数シートの特定セルの集計を出したい

以前、複数シートを集計したい(別シートへ集計させたい)という質問をさせていただき
ご回答いただきました。
https://oshiete.goo.ne.jp/qa/9705836.html

これに似たような質問なのですが、今度は複数シートの集計だけでなく、同一フォルダにある複数のブックの複数シート(同じフォーマット)の
特定のセルを集計して、「合計」というシートに集計した数値を表示させるマクロを作成したいです。
※ブックは開かず閉じたまま実行したいです。

複数ブックはそれぞれ支店&課名になっており、シート名はその支店の担当者名になっております。
全ブックの個人シートの特定セルを合計すると「合計」というシートの各支店、各課の前年、計画、実績に数値を合計させるといった
ことができたらなと思っております。

個人別シートのそれぞれA、B、Cの黄色のセルを合計シートの月別の前年、計画、実績へ表示させたいです。

何卒、ご教授願います。

Aベストアンサー

「それ以外」シートの方ですが下記URLへ格納しました。
http://climbi.com/b/10229/0

条件は、
個人シートのD列 ”売上”の行が集計対象(2つ以上あること)(上から2つまでを集計)
上記を「それ以外」シートの①②へ集計する
で行っています。

Qエクセルでセルをダブルクリックしたらそのブックの別のシートに飛ぶ動作

エクセルでセルをダブルクリックしたらそのブックの別のシートに飛び
とんだ先のシートにダブルクリックしたところのセルと同じものを記入する
といったような動作はVBAでは可能でしょうか。
すみませんが教えて頂きたいです
よろしくお願いいたします

Aベストアンサー

別にマクロの品評会でもありませんが、こんなコードになります。
マクロ禁断のSelect を使った特殊な例です。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim sh2 As Worksheet
 If Target.Value = "" Then Exit Sub
 Set sh2 = Worksheets("Sheet2") '目的のシート
 Cancel = True 'これは忘れないこと。おまじない
 Me.Select False
 sh2.Select False
 Target.Select
 Selection.Value = Selection.Value '* 
 Me.Select
End Sub

'数式の場合
 'Selection.FormulaLocal = Selection.FormulaLocal

QExcelで2つ1組の数値の内、1つの数値を別の数値とセットにする方法

①のシートのA列に型番、B列にシリアルが入っており、②のシートのA列に型番のみが入っています。
①と②の型番は完全一致しているものもあれば、型番の末尾が途切れてしまい完全一致しないものもありますし、数文字しか一致しないものもあります。
②の型番の隣に①のシリアルを入れたいのですが、何かうまく関数を使えば簡単にできるでしょうか?

型番をそれぞれ昇順にして貼り付けようとしたのですが、①と②の型番が完全一致ではないため、同じ並びにならず、そのまま貼り付けることができません。
何かいい方法があれば教えて下さい。
宜しくお願い致します。

例】
①シート
A列 B列
ABC 1234
PQR 2345
STU 5678
XYZ 1209
②シート
A列 B列
TU
XYS
PQR
BC

分かりづらかったらすみません。。。
宜しくお願い致します。

Aベストアンサー

部分的に重複しているような型番もあるのでしょうか?
ABCとABDという型番があり、②に欠けたABという型番があった場合、ABCかABDか判断する方法が無いと思います。
また、②のXYSというのはXYZが間違えて?入力されているような場合を想定していると思われますが、それもどの程度の一致で判断するのでしょう?
②にXYSとあって、①にXYZとEYSが存在した場合、どちらと判定すればよいか分からないと思います。

何らかの判断基準を決めたとして、
まずVLOOKUPで完全一致を探し、一致したもののシリアルを取得します。
フィルタを使い、エラー表示のものだけ表示し、式の内容を変更します。

判断基準の優先度が高いものから順に試します。
場合によっては①のA列とB列の間に列を挿入し、判定用の補助セルとして使います。
例えば、前から5文字一致したら同一とみなす。とした場合、
VLOOKUPとLEFTにより、左から5文字抽出したものが一致した場合にシリアルを取得します。
先ほど同様にフィルタでエラーのものだけ表示させ、また別の条件の式を入力します。

例えば今度は右から5文字一致したら、とかでしょうか。
あるいは②の文字が欠けているとして、②の全てを含むセル。という条件もあるでしょう。
この場合SUMPRODUCTやFIND、INDIRECT、ROW等を使い、一致するものがある列の行番号を取得する必要があると思われます。

データの数にもよりますが、残り少なくなれば判定式を考えるより目で見た方が早いかもしれません。

自分が思いついたのはこの程度です。
人間が条件を指定してあげないと機械も判別できないですよ。
もっと上手いやり方もあるかもしれないので、他の回答者に期待。

部分的に重複しているような型番もあるのでしょうか?
ABCとABDという型番があり、②に欠けたABという型番があった場合、ABCかABDか判断する方法が無いと思います。
また、②のXYSというのはXYZが間違えて?入力されているような場合を想定していると思われますが、それもどの程度の一致で判断するのでしょう?
②にXYSとあって、①にXYZとEYSが存在した場合、どちらと判定すればよいか分からないと思います。

何らかの判断基準を決めたとして、
まずVLOOKUPで完全一致を探し、一致したもののシリアルを取得します。
...続きを読む

Qエクセルvba 一つ上の行を指定した回数分コピーする。

教えて下さい。vba初心者です。

A B C D E F G H
7 522 加藤 沖縄 みかん 縄 1 1/5 空欄
8 123 吉田 愛媛 りんご 水 3 2/10 空欄

1️⃣一番最後に入力した行をすぐ下にコピーしたい。(ここでは7行目…入力して行くと行は増えます。)
2️⃣指定回数はE列。

この列ではE列が3回になりますので、
コピーしたい範囲はA〜G列を、すぐ下の8行〜9行までの2回分コピーしたいです。

完成希望例
A B C D E F G H
7 522 加藤 沖縄 みかん 縄 1 1/5 空欄
8 123 吉田 愛媛 りんご 水 3 2/10 空欄
9 123 吉田 愛媛 りんご 水 3 2/10 空欄
10 123 吉田 愛媛 りんご 水 3 2/10 空欄

にしたいです。

教えて下さい。vba初心者です。

A B C D E F G H
7 522 加藤 沖縄 みかん 縄 1 1/5 空欄
8 123 吉田 愛媛 りんご 水 3 2/10 空欄

1️⃣一番最後に入力した行をすぐ下にコピーしたい。(ここでは7行目…入力して行くと行は増えます。)
2️⃣指定回数はE列。

この列ではE列が3回になりますので、
コピーしたい範囲はA〜G列を、すぐ下の8行〜9行までの2回分コピーしたいです。

完成希望例
A B C D E F G H
...続きを読む

Aベストアンサー

前の絵のリスト範囲の所、名前定義も使えますよ。
というか、数式を入れるところの右のボタンみたいのを
押すと、入力する代わりにマウスで別シートでも
ドラッグで範囲指定できるから、範囲指定とぴったり
合致すれば、勝手に名前に変換されるみたいだった。
名前で指定の時、先頭に=はつけないみたいです。

ボタンはどっちをお使いですか?
呼び出している subの名前で判ります。
Private Sub CommandButton1_Click()
と決まっているのがActiveXの方です。

QEXCEL 一番右の結果を返す関数を教えてください。

閲覧ありがとうございます。

WEBアンケートの結果集計をしています。
複数回答で、YESと回答するとEXCELに「1」と表示されます。
右にいくにつれて最新情報となっている為、一番右の「1」を反映させたいです。

添付画像は例です。
左の表を右の表のように作り変えるには、H列にどのような関数を入れればよいでしょうか。

よろしくお願いいたします。

Aベストアンサー

=IFERROR(LOOKUP(2,B2:E2,B$1:E$1),"")

でどうですか?

Q数式を値に置換するには?

Excelにて、数式のエラー(#N/A)を検索オプションにて、値で検索し、値(0)←数字のゼロに置換しようとするのですが、上手くいきません。
置換できる方法を教えて下さい。

Aベストアンサー

こんにちは!

VBAになりますが一例です。
すべてのエラーセル(#N/Aや#DIV/0!など)が「0」になります。

Sub Sample1()
Dim myRng As Range
Set myRng = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
If Not myRng Is Nothing Then
myRng = 0
End If
End Sub
 
※ #N/A のエラーだけを「0」にしたい場合は↓のコードにしてみてください。

Sub Sample2()
Dim c As Range, myRng As Range
Set myRng = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
If Not myRng Is Nothing Then
For Each c In myRng
If c = CVErr(xlErrNA) Then
c = 0
End If
Next c
End If
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんにちは!

VBAになりますが一例です。
すべてのエラーセル(#N/Aや#DIV/0!など)が「0」になります。

Sub Sample1()
Dim myRng As Range
Set myRng = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
If Not myRng Is Nothing Then
myRng = 0
End If
End Sub
 
※ #N/A のエラーだけを「0」にしたい場合は↓のコードにしてみてください。

Sub Sample2()
Dim c As Range, myRng As Range
Set myRng = ActiveSheet.Cells.SpecialCells(x...続きを読む

Q【マクロ】値で貼り付けをしたい

---------------------------------------------------------------------------------------------------------
Option Explicit
Public Sub motolist()
Const sh1 As String = "29.4月実績" 'コピー元シート
Const sh2 As String = "元データ(201607~)" 'コピー元シート
Const sh3 As String = "リスト" 'コピー元シート
Dim maxRow1 As Long 'コピー元最大行
Dim maxrow2 As Long 'コピー先最大行
Dim maxrow3 As Long 'コピー先最大行
Dim rg1 As String
Dim rg2 As String
Dim rg3 As String
maxRow1 = Worksheets(sh1).Cells(Rows.Count, "A").End(xlUp).Row 'コピー元のA列最大行取得
maxrow2 = Worksheets(sh2).Cells(Rows.Count, "A").End(xlUp).Row 'コピー先のA列最大行取得
maxrow3 = Worksheets(sh3).Cells(Rows.Count, "A").End(xlUp).Row 'コピー先のA列最大行取得
MsgBox ("maxrow1=" & maxRow1 & " maxrow2=" & maxrow2 & " maxrow3=" & maxrow3) '①追加
rg1 = "A2:AD" & maxRow1
rg2 = "A" & (maxrow2 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh2).Range(rg2)
rg1 = "D2:D" & maxRow1
rg3 = "A" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "H2:I" & maxRow1
rg3 = "B" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "K2:L" & maxRow1
rg3 = "D" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "AE2: AI" & maxRow1
rg3 = "F" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
End Sub
---------------------------------------------------------------------------------------------------------
以前、上記マクロをご教授頂いたのですが、
下記のところだけF列へ貼り付けをする際、値で貼り付けをしたいです。
Sh1のAE:AI列に数式が入っている為です。

rg1 = "AE2: AI" & maxRow1
rg3 = "F" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)

値で貼り付けというのが「PasteSpecial Paste:=xlPasteAll」というのは調べてわかったのですが
どう繋げたら良いのか?ご教授頂ければ幸いです。

何卒、ご教授願います。

---------------------------------------------------------------------------------------------------------
Option Explicit
Public Sub motolist()
Const sh1 As String = "29.4月実績" 'コピー元シート
Const sh2 As String = "元データ(201607~)" 'コピー元シート
Const sh3 As String = "リスト" 'コピー元シート
Dim maxRow1 As Long 'コピー元最大行
Dim maxrow2 As Long 'コピー先最大行
Dim maxrow3 As Long 'コピー先最大行
Dim rg1 As String
Dim rg2 As String
Dim rg3 As String
...続きを読む

Aベストアンサー

例えば値だけを貼り付ける例(2行にする)
xlPasteAllだと、値も式も色も背景、罫線なども全てが貼り付きます。


Worksheets(sh1).Range(rg1).Copy Worksheets(sh2).Range(rg2)

Worksheets(sh1).Range(rg1).Copy
Worksheets(sh2).Range(rg2).PasteSpecial Paste:=xlPasteValues


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報