• ベストアンサー
  • 困ってます

[ExcelVBA]条件対象セルへの値の設定

添付ファイルのような行列が商品コードのテーブルがございます。 行列は共に1000ぐらいございます。 どのようにVBAすれば良いかを伝授して頂けないでしょうか? 調べましたがExcelでは、セルに値を設定はできないようです。 Rangeで範囲指定後のif文などでの対象セルへの値設定がわかりません。 ・同じ商品コードでのマッチングで、金額が1以上だと合致したセルに0をセット ・商品コードのセルは、A1

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数35
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1
  • kkkkkm
  • ベストアンサー率59% (960/1626)

以下のコードで試してみてください。 Sub Test() Dim c As Range Dim FRng As Range With Sheets("Sheet1") For Each c In .Range(.Cells(1, "C"), .Cells(1, Columns.Count).End(xlToLeft)) Set FRng = .Range(.Cells(2, "A"), .Cells(Rows.Count, "A").End(xlUp)).Find(What:=c.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not FRng Is Nothing Then If .Cells(FRng.Row, c.Column).Value >= 1 Then .Cells(FRng.Row, c.Column).Value = 0 End If End If Next End With End Sub

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Excelの数式

    添付ファイルのような行列が商品コードのテーブルがございます 行列は共に1000ぐらいございます どのように以下のExcelの条件数式を設定すれば良いかを伝授して頂けないでしょうか? ・同じ商品コードでのマッチングで、金額が100以上だと合致したセルを赤色 ・違う商品コードでのマッチングで、金額が200以上だと合致したセルを黄色

  • ExcelVBAでセルの移動をしたい

    aという変数に、A1の値を代入することはできましたが、 例えば、A2にも値があればA2の値を代入するようにしたいです。 A列の1番下のセルの値を代入させるようにするにはどうしたらよいのでしょうか。 日本語が下手ですいません。 宜しくお願い致します。 a = Range("A1")

  • エクセルVBAで設定したセルの値

    エクセルVBAについての質問です。 例えば、A1とB1のセルの値を参照している数式がC1セルに設定してあるとします。 さらに、D1のセルにはC1の値を参照している数式が設定してあるとします。 VBAでA1、B1のセルの値を変更したとします。 次のステップのVBAでC1、D1のセルを参照すれば、A1、B1の変更が反映された後の正しい値である C1、D1の値が取得できるのでしょうか? できて当たり前だと思うのですが、セルに設定してある数式が大変複雑であったりすると、ちゃんとA1、B1の変更が反映された正しいC1、D1セルの値がVBAで取得できるのかちょっと不安です。 ばかな質問かもしれませんが、回答をよろしくお願い致します。

その他の回答 (2)

  • 回答No.3
  • imogasi
  • ベストアンサー率27% (4576/16388)

条件を文章で記述すること。 画像だけ見せて、コメントも添えないのは、心得違い。 前の質問でセルに色を付ける課題だったと思うが、解決したのかな。 関連あるならば、その時の質問番号などのを記述するとかすべきだ。 セルの値の条件をVBAなどでColorIndexで設定しておれば、どこにそのセル(色を付けたセル)があるかを判定はやさしいが、そうでないと、条件そのものを文章で記述してもらえわないと、やりづらい。 色のついてないセルでセルの値が0でないようなセルは、対象になっているようだが、どういう理由か? >セルに値を設定はできないようです 一般には硬派言えないが、何をみて、何をやってそういっているのか。 範囲指定した全セルを、舐めるのは簡単にForEachーNext で(1セルずつ、全セルを掴めるが、あとはセルの条件判定と、Cl.Value=0だけでしかない。 沢山の人が見る質問として、実際は#1の回答でOKかもしれないが、補足すべきだ。

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • kkkkkm
  • ベストアンサー率59% (960/1626)

No1の追加です。 商品コードと記載されているセルがA1だとした場合のコードです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

問題なく実行できました。 ありがとうございました。

関連するQ&A

  • ExcelVBA 挿入貼り付けについて

    ExcelVBA勉強中の者です 変数にA1セルを指定し、別のセルへA1の値を挿入したいのですが上手くいきません。 Dim A1Cell As Range Set A1Cell = Range("A1") ↑Msgbox(A1Cell)にてA1セルの値を出力したので変数の宣言は出来ていると思います。     ActiveCell.Resize(1, 5).Select    Selection.Copy Range(A1Cell).Selection.Insert Shift:=xlDown         ↑ここでの変数の指定が間違っていると思われます Application.CutCopyMode = False かなり調べたつもりですが、自力では解決できずどなたか御助力お願い致します。

  • VBA 値のみ貼り付け

    VBAで質問です。 選択したセルへ他のセルをコピーして値のみを貼り付けしたいのですが、うまくできません。 貼り付け先のセルはその都度異なります。貼り付ける値は特定されたセルでその都度変わることはありません。  <例> A1の商品名は固定。ボタンを設けマクロを登録します。         A      B      C      D    1 商品あああ    2    3     4       ボタンを押すと選択したセルにA1の商品名が貼り付けされるようにしたい。       貼り付け先がA3と特定されている場合は以下の式でできますが、       選択するセルがその都度異なる場合はどうしたら良いのでしょうか?        Range("A1").Copy      Range("A3").PasteSpecial Paste:=xlValues       いい方法があれば教えてください。

  • ExcelVBAで直ぐに繁栄しないPrivate

    ExcelVBAで直ぐに繁栄しないPrivate Sub Worksheet_Change(ByVal Target As Range) If Target = Range("A1") Then   Range("B1").Value=fncMojiHenkan(Range("A1").Value End If End Sub セルA1に文字列を入力したり、他から文字列をコピペしてEnterキーを押しても、セルB1に直ぐに繁栄されません。 もう一度Enterキーを押すか矢印キーでセル移動しないとセットした値がB1に表示されません。 値をセットして直ぐに表示させるにはどうしたらいいでしょうか?

  • ExcelVBAでシートに計算式を書きたいが、式の中で

     例えばワークシートのセルA1が1なら空欄、それ以外なら1となるような計算式 IF(A1=1,"",1) をVBAでセルB1書き込む場合、 Range("B1").Formula= "=IF(A1=1,"",1)"と書いたのですが、計算式の中に""を含んでしまっているため、マクロがエラーになってしまいました。 計算式の中に""を含んだマクロを各にはどうしたらよいのでしょうか。 よろしくお願いします。

  • 値の貼り付けをするVBA

    セルA1をコピーして、セルA2に値の貼り付けをするVBAを作っています。 下記のように記述しているのですが、 セルA2に値の貼り付けをするときに小数点第3ケタ目以下はデータを捨てることは出来ますでしょうか? セルの設定で小数点2桁目まで表示するのではなくて、セルに入力するデータを小数点2桁の数字にしたいです。 range("A1").Copy Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

  • ExcelVBAでOutlookにセル内容を送る

    いつもすいません。本日はExcelVBAでOutLookを操作する件です。 Excelのあるセルの内容を、書体やフォントの大きさ、色などをそのままにして OutLookのメール本文に設定できないでしょうか? 要は、「セルを選択~コピー」 「Outlookのメール本文で貼り付け」という作業をしたいんです。 現状のExcel-VBAのコードは Set M = AP.createitem(0) 'OutLookの起動 M.bodyformat = 3 'テキストメールを指示 M.To = Work_A '宛先 M.Subject = Work_T '件名 M.body = Work_C '本文 M.display 'メールを表示 こんな感じで、「Work_C」には「Range("A1").Value」でデータを与えているために、 現状テキストデータしか送られてないんです。 どうすれば「M.body」に「Range("A1") 」の書式を含めたデータを与えられますか? 出来れば、HTMLのコードを書かずに何とかしたいんですけど・・・。

  • ExcelVBA 二つのセルに入力された時の判定

    セルA1とA2両方に値が入力された時、セルA3に文字を入力するマクロを作りたいです。 下記プログラムで試しているのですが、ステップインで見ると最初のIFでTrue判定されてしまいます。 どうすればこの条件を満たすマクロになるのか、教えて頂けないでしょうか。 以上、宜しくお願い致します。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Or Intersect(Target, Range("A2")) Is Nothing Then Exit Sub Else If Range("A1").Value <> "" And Range("A2").Value <> "" Then Range("A3").Value = "入力済み" End If End If End Sub

  • 【ExcelVBA】IF条件を満たしているのに、IF条件のところで止まってしまう

    Sub test1() 変数1 = IsEmpty(Range("C1")) If Range("A1") > 0 And Range("B1") = 0 And 変数1 = True Then   test2 End If End Sub 止まったときのデバッグでの表示は Range("A1")は「100」(セルの中身) Range("B1")は「0」(セルの中身) 変数1はRange("C1")がエラー表示なので「True」 すべての条件を満たしているのですが、 IF条件のところで止まってしまいます。 (IF条件のところの1行が黄色くハイライトになっている状態) 止まったデバッグの後に、F5を押して実行させると、 IF条件の続きから実行されて、test2が実行されて処理が終了します。 何で、IF文のところで一度止まってしまうのかわかりません。

  • 【VBA】改行されたセルの条件

    VBAにてA1のセルが画像のように改行されたセルであっても条件式で処理を行うようにしたいのですがうまくできません。 ↓式のように作成はしてみました どうしたら改行されたセルでも処理が行えるのでしょうか? Sub test() If Range("A1") = (行1行2の場合) Then 処理 End If End Sub

  • ExcelVBAでセルを編集状態にする方法

    VBAを使ってセルを編集状態にするコードについてお聞きします。 Range("A1").Selectでセルを選択し、 Range("A1").value = "***"のように 文字を入力すると元々入力してあった文字が消えてしまいます。 入力してある文字列の文末を選択し、 次の文字列を入力するにはどのようにすればよいのでしょうか。 また、セルを編集状態にして、入力文字列の最後の1文字を消す方法を教えてください。 宜しくお願いします。