戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法

    [191393] セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ れみ★ -(2020/02/17(18:57))
    □U R L/

      こんにちは、レミです。
      現在VBA初心者です。

      自動計算のコード書いているのですが、

      「特定の文字が書いてあるセルの2つ隣のセルの値から
      特定のもじが書いてあるセルの2つ隣のセルの値までを合計する」

      作業のコードに挑戦しています。
      表は以下の感じです。

        A  B  C  D  E
      1
      2 あ    10
      3 い    10
      4 う    10
      5 え    10
      6 お    10
      7

      この表の場合、あ〜おのC列の合計結果を出せるコードを書いています。

      以下が、私が書いたコードです。

      sum (range("あ”hoffset+2:"お" offset+2)

      全く動きませんでした。
      ご助力をお願いしたいです。







    [191394] Re[1]: セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/02/17(19:38))
    □U R L/
      Sub test()
          DimAs Range
          DimAs Range
          
          Set あ = Columns(1).Find("あ")
          Set お = Columns(1).Find("お")
          
          MsgBox WorksheetFunction.Sum(Range(あ, お).Offset(, 2))
           
      End Sub
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [191395] Re[2]: セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    記事引用/メール受信=OFF■

    □投稿者/ れみ★ -(2020/02/17(22:01))
    □U R L/
      マナさんありがとうございます。
      
      同コードを書いて実行してみたのですが、
      実行時エラー’1004!
      rangeメソッドは失敗しました
      と出てしまいました。
      試しに、
      
      Sub test2()
      
          DimAs Range
          
          Set あ = Columns(1).Find("あ")
          
          MsgBox Range(あ).Offset(, 2)
          
          
      End Sub
      
      …を実行してみたのですが、同様のエラーが発生してしました。
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [191396] Re[3]: セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    記事引用/メール受信=OFF■

    □投稿者/ γ -(2020/02/17(22:45))
    □U R L/
      (横から失礼)
      
      まったく同じコードで試したが、エラーにはなりません。
      正しい結果を返します。
      もしエラーになるとしたら、マッチしていないだけだと思います。
      
      また、あなたの別のトライは、常にエラーになります。
      
      Range(あ,お)   は正しいが
      Range(あ)     は間違いです。
      
      あ  は Range("A1")などと同じRangeオブジェクトです。
      
      Range(Range("A1"),Range("A5"))は正しいが、
      Range(Range("A1"))はエラーになります。
      
      つまり、Range("A1")は正しいが、
      Range(Range("A1"))などという書き方は間違いです。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [191397] Re[4]: セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    記事引用/メール受信=OFF■

    □投稿者/ れみ★ -(2020/02/18(00:04))
    □U R L/
      マナさん、γさんありがとうございます。
      私のセルの列が1つずれていたようです。
      ちゃんと動作確認が取れました。
      
      いまいち、オブジェクトに関する理解が及んでいないようです。
      下記に頂いたコードに注釈を付けたものを記載しますので、
      もし間違いがあればご指摘頂けると助かります。
      
      Sub test()
        
          '変数を定義、「あ」をrangeとして
        '変数を定義、「お」をrangeとして
          DimAs Range
          DimAs Range
      
        '「あ」は列1の「あ」の見つかるセル
        '「お」は列1の「お」の見つかるセル
          Set あ = Columns(1).Find("あ")
          Set お = Columns(1).Find("お")
      
        '列1の「あ」の見つかるセルから列1の「お」の見つかるセルの範囲の
        '2列ずらした数値を合計し、メッセージボックスを表示
          
          MsgBox WorksheetFunction.Sum(Range(あ, お).Offset(, 2))
      
        'ちなみに「あ」や「お」は既にrangeオブジェクトならば、
        'Sum(あ,お.offset(2))でもいいのではないかと思ってやってみたら、
        '当然ですがエラーとなりました。なぜエラーになるかがわかりません。
           
      End Sub


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [191398] Re[5]: セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    記事引用/メール受信=OFF■

    □投稿者/ γ -(2020/02/18(00:19))
    □U R L/
      Sum(あ,お.offset(,2))  について。(offset(2)じゃなくoffset(,2)だろう)
      
      仮に、あ は A1セル、お はA5セルとします。
      
      =SUM(A1,C5)
      とワークシートで書くと、何が返りますか?
      
      A1("あ"という文字列が入っている)
      と
      C5(数値)
      のそれぞれの値の合計です。
      
      数値でないA1は対象外ですから、C5の数値だけが合計値として返ります。
      
      これはあなたの望んだものですか?
      




    [191399] Re[6]: セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    記事引用/メール受信=OFF■

    □投稿者/ れみ★ -(2020/02/18(09:25))
    □U R L/

      γさんありがとうございます。
      "あ"は既にセルとして扱われているという認識ですよね?
      そうすると、rangeを入れないと範囲を指定できないという理解を現状しています。


      Msgbox Cells(9, 7) - ("あ").Offset(-1, 3)

      そうなると、上記のコードの("あ")は既にセルとして扱われているので、
      このコードは動くと思ったのですが、エラーとなってしまいました。
      やはり、rangeオブジェクトの理解が出来ていないのでしょうか?




    [191400] Re[7]: セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    記事引用/メール受信=OFF■

    □投稿者/ γ -(2020/02/18(09:41))
    □U R L/
      >("あ").Offset(-1, 3)
      これはエラーになりますよ。
      
      あ と "あ" は全く別物です。
      あ というのはRange変数。
      "あ"というのは単なる文字列です。
      
      ""のなかに 変数あ が入っていても、それは関係なくなります。
      単なる文字列です。
      
      文字列には、.Offsetなどというプロパティはありませんから、
      エラーになって当然です。
      
       




    [191401] Re[8]: セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    記事引用/メール受信=OFF■

    □投稿者/ れみ★ -(2020/02/18(15:11))
    □U R L/
      なるほど!
      つまりrangeとして定義したので、あ 単体でrange(A2)という意味を既に持っているという事ですね。なのでこの場合、
      
      
      Msgbox Cells(9, 7) - あ.Offset(-1, 3)
      
      …が正解という事ですね!
      理解出来ました!
      
      また、range変数は範囲を表す変数、
      object変数は全てのオブジェクトを表す変数なので、
      Dim あ as objectでも大丈夫です!
      …という認識に至りました。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [191402] Re[9]: セルに入力された文字列を判別して、同範囲の2つ右の値の合計を出す方法-

    記事引用/メール受信=OFF■

    □投稿者/ γ -(2020/02/18(15:56))
    □U R L/
      >理解出来ました!
      ご同慶の至り。(若い人には通じないかも)
      
      ところで、
      >Dim あ as objectでも大丈夫です!
      >…という認識に至りました。
      ですが、そういうことはやめたほうがいいです。
      
      きちんとRangeで宣言することには、
      作成者の意図が明確になることのほか、
      大きなメリットがあります。インテリセンスです。
      
      ご存じと思いますが、以下の機能です。(念のため)
      Range変数に続けて.(ドット)を入れると、インテリセンスが働きます。
      ・そのオブジェクトが持っているメソッドやプロパティの一覧が表示されます。
      ・それらの頭文字1字を入れると、それから始まるものが表示されます。
      ・途中であってもTabなり、Enterで入力を完成できます。
      (ネットで検索すると、図解の説明があるでしょう。)
      
      貴見では、極論すると As Variant でもよい、ことになってしまう。
      まずいのは、コードの意図が伝わらなくなること、
      そして、インテリセンスが失われてしまうことです。
      その他にもあるかもしれない。
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G