質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

5回答

7029閲覧

エクセル 関数 条件一致セルに〇を付ける

Mkasai

総合スコア19

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2020/02/04 04:34

A列のセルをダブルクリックすると〇が付くようにしたいのですが、A列に1つだけ〇がつけられる仕組みにしたいのです。

現状では、指定した範囲のセルはいくらでも〇がつきます。

今作成してているVBAは次のとおりです。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True
If Intersect(Target, Range("A2:A301")) Is Nothing Then Exit Sub

Select Case Target.Value
Case ""
Target.Value = "〇"
Case "〇"""
Target.Value = ""
End Select
End Sub

また、Aセルに〇が付くと同時に同じ行のM列に〇がつく。

=IF(A2="〇","〇","")

これについてはできるのですが、同時に、その行のBセルに入力の番号とL列の番号が一致した場合は、その行のM列のセルにも〇を付けたいのですが、そこがどのような条件で作成したらいいのか悩んでいます。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

返事よく理解せずすみません。

いずれかのセルをダブルクリックしたら
1.その行のA列に〇をつける、〇があれば消す
2.関数で
a.A列に〇があればM列に〇をつける
b.その行のB列の値でL列を検索しM列に検索したA列の〇ありなしを反映する

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim rngTarget As Range Dim rngFind As Range Dim Trow As Long If Target.Count > 1 Then Exit Sub '複数セル選択禁止? Trow = Target.Row If Cells(Trow, 1).Value = "" Then Cells(Trow, 1).Value = "〇" Else Cells(Trow, 1).Value = "" End If MaxRow = Cells(Rows.Count, 2).End(xlUp).Row For Trow = 2 To MaxRow '=IF(A3="〇","〇",IF(L3>0,IF(INDEX($A:$A,MATCH(L3,$B:$B))="〇","〇"," ")," ")) Cells(Trow, 13).Formula = "=IF(RC[-12]=""〇"",""〇"",IF(RC[-1]>0,IF(INDEX(C1:C1,MATCH(RC[-1],C2:C2))=""〇"",""〇"","" ""),"" ""))" Next End Sub

投稿2020/02/12 10:43

sinzou

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mkasai

2020/02/13 02:14

希望通りのものができました。 何度もお力を貸していただきありがとうございました。
guest

0

2.その行のB列の値でL列を検索しM列にA1の〇ありなしを反映する
勝手な仕様つけてすみません。

 ダブルクリックされた行のA列「作成」に〇をつける、消すを繰り返す。
M列は関数でM2から最終行までコピーする。(毎回上書きです)

マクロは、下記でよろしくお願いします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim rngTarget As Range Dim rngFind As Range Dim Trow As Long If Target.Count > 1 Then Exit Sub '複数セル選択禁止? Trow = Target.Row If Cells(Trow, 1).Value = "" Then Cells(Trow, 1).Value = "〇" Else Cells(Trow, 1).Value = "" End If   MaxRow = Cells(Rows.Count, 2).End(xlUp).Row For Trow = 2 To MaxRow '=IF(A2="〇","〇","") Cells(Trow, 13).Formula = "=IF(RC[-12]=""〇"",""〇"","" "")" Next End Sub

投稿2020/02/12 06:10

編集2020/02/12 07:10
sinzou

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mkasai

2020/02/12 07:08

ありがとうございます。 その行のB列の値でL列を検索しM列にA1の〇ありなしを反映する の仕様が欲しかったのです。 どう表現していいかわからないのを教えていただき助かりました。 M列に数式を入れるという考えをなくしたらいいのでしょうか。 Aセルをクリックしたら同じ列のMセルと、B列の値でL列を検索した結果にも同時に〇をつけたいのです。 伝え方が悪く、何度もお手数をお掛け致します。 よろしくお願いします。
sinzou

2020/02/12 07:12

関数貼り付け追加し、再投稿しました。
Mkasai

2020/02/12 07:29

何度もありがとうございます。 A2セルをクリックしたら、M2セルと同時にL列に1と入っているM4にも〇が付くようにはなりますか? With ThisWorkbook.Worksheets(1).Range("L:L") Set rngTarget = .Find(Cells(Trow, 2).Value, LookAT:=xlWhole) If Not rngTarget Is Nothing Then '最初のセルのアドレスを覚える firstAddress = rngTarget.Address Do Cells(rngTarget.Row, 13).Value = Cells(Trow, 1).Value Set rngTarget = .FindNext(rngTarget) If rngTarget Is Nothing Then Exit Do Loop Until rngTarget.Address = firstAddress こちらを教えていただいた時には、同時に〇がついていたので希望通りの動きだったのですが、M列に入っている関数が消えてしまうのが悩みだったのです。 何度もお手数をお掛け致します。 よろしくお願いします。
sinzou

2020/02/12 07:38

関数の部分を書き換えてください。 '=IF(INDEX(A:A,MATCH(L2,B:B))="〇","〇"," ") Cells(Trow, 13).Formula = "=IF(INDEX(C1:C1,MATCH(RC[-1],C2:C2))=""〇"",""〇"","" "")"
guest

0

いずれかのセルをダブルクリックしたら
1.その行のA列に〇をつける、〇があれば消す
2.その行のB列の値でL列を検索しM列にA1の〇ありなしを反映する

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim rngTarget As Range Dim rngFind As Range Dim Trow As Long If Target.Count > 1 Then Exit Sub '複数セル選択禁止? Trow = Target.Row If Cells(Trow, 1).Value = "" Then Cells(Trow, 1).Value = "〇" Else Cells(Trow, 1).Value = "" End If With ThisWorkbook.Worksheets(1).Range("L:L") Set rngTarget = .Find(Cells(Trow, 2).Value, LookAT:=xlWhole) If Not rngTarget Is Nothing Then '最初のセルのアドレスを覚える firstAddress = rngTarget.Address Do Cells(rngTarget.Row, 13).Value = Cells(Trow, 1).Value Set rngTarget = .FindNext(rngTarget) If rngTarget Is Nothing Then Exit Do Loop Until rngTarget.Address = firstAddress End If End With End Sub

投稿2020/02/08 14:55

編集2020/02/09 08:43
sinzou

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mkasai

2020/02/12 05:14

ありがとうございました。 思うように動くようになりました。 M列のセルには、 =IF(A2="〇","〇","") のように数式を入力しているのですが、マクロを実行すると、B列の値でL列を検索した結果〇となったMセルの数式が消えてしまいます。 くり返し何度も使いたいので、Mセルの数式を残したまま使いたいです。 毎回M2セルを下までコピーするようなマクロを追加しようと思ったのですが、M2セルが検索した結果〇となってしまった場合、数式が消えているので使えないので、悩んでおります。 お力お貸しください。 よろしくお願いします。
sinzou

2020/02/12 05:57

ダブルクリックされた行のA列「作成」に〇をつける、消すを繰り返す。 B列「番号」の値のあるL列「親番号」の行のM列「作成」をA列「作成」に合わせる。 を行っています。 =IF(A2="〇","〇","")は もしA2に"〇"があれば、セルに"〇"を入れ、そうでなければ""を入れる。です =A2 と同じですよ。
sinzou

2020/02/12 06:17

M列、勝手な仕様付けてすみません
sinzou

2020/02/12 06:45

もしA2に"〇"があれば、セルに"〇"を入れ、そうでなければ""を入れる。です tたびたび しつれいを すみません。
guest

0

ExcelVBA

1Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 2 Dim Rng As Range 3 4 If Target.Count > 1 Then Exit Sub 5 With Me.UsedRange 6 Set Rng = Intersect(.Columns(1), .Offset(1)) 7 End With 8 If Rng Is Nothing Then Exit Sub 9 If Intersect(Rng, Target) Is Nothing Then Exit Sub 10 11 Cancel = True 12 Rng.ClearContents 13 14 With Target.EntireRow 15 .Range("A1").Value = "○" 16 .Range("L1").Value = .Range("B1").Value 17 End With 18End Sub

数式は、
=IF(ISBLANK(B2),"",IF(B2=L2,"○",""))
とか。

投稿2020/02/04 07:30

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mkasai

2020/02/05 04:31

ありがとうございました。 Aセルに1つのみ〇が付くよう設定できました。 質問時の説明がわかりにくくて申し訳ありません。 現在設定させていただきましたところ、A2セルをダブルクリックしたらM2セルに〇が付き、同時にL2セルにB2セルに入力されている数字が表示されるのですが、Lセルへの数字表示は必要なく、M2セルに〇をつけるだけにしたいのです。 また、B1セルに1と入力されていますので、L列に1と入力されいるセルがあれば、該当する行のM列のセルに〇を付けたいです。 質問時の資料でいきますと、L4セルに1と入力されているので、A2セルをダブルクリックしたら、M2セルとM4セルに〇が付く仕組みを作りたいと思っています。 また、L列に入力されている同じ数字が複数ある場合は複数のM列のセルに〇を付けたいです。 お力お貸しください。よろしくお願いします。
guest

0

ダブルクリック時の処理

VBA

1Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 2 Cancel = True 3 Range("A2:A301").Value = "" 4 Target.Value = "〇" 5End Sub

M2セル

Excel

1=IF(AND(A2="〇",B2=L2),"〇","")

これを全M列にコピペ

投稿2020/02/04 04:56

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2020/02/13 02:26

スルーされた orz
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問