Excel(エクセル)の操作が楽になる方法と便利な使い方を紹介しています。


menu

Excel(エクセル)が楽で便利になる方法

セルの値を取得したい!設定もしたい!Excelマクロ(VBA)のCells関数のValueプロパティ

[ この記事の内容は Excel2013 でも使えます ]  
セルの値を取得したり、設定したりする時には Cells関数のValueプロパティ を使います。
 
マクロ(VBA)にはたくさんの関数がありますが、とりあえず、このCellsを覚えておけばなんとかなりますよ。
  

スポンサーリンク

Cells関数のValueプロパティの使い方

 
[書式]
Cells( 行の番号, 列の番号 ).Value
 
行の番号は、行番号がそのまま入ります。
 
先頭行であれば1、6行目であれば6ですね。
 
 
列の番号は、A列の場合は1、B列の場合は2といった番号が入ります。
 
 
 
例えば、「Aさん」という文字はA2セル(2行目の1列目)にありますので、
Cells( 2, 1 ).Value
とすると、「Aさん」という文字を取得できます。
 
 
 

スポンサーリンク

Cells関数を使ったサンプルプログラム

以下のような表があります。
 
名前毎に1~3回目の列に数字が入っていますね。
 
 
数字が入っている場合、該当する回数を一番右列にくっつけて表示してみます。
 
 
このプログラムを実行します。
 
実行方法はこの記事を参考にしてくださいね。
 
 
Function test1()
 
    '変数を定義する
    Dim gyou As Integer     '行の数
    Dim hyouji As String    '表示文字
    
    '表示文字を空にする
    hyouji = ""
 
    '4~6行目の値をチェックする
    For gyou = 4 To 6
    
        'B列(2)の値が空じゃなかったらタイトル文字を表示
        If Cells(gyou, 2).Value <> "" Then
            hyouji = hyouji & "・" & Cells(3, 2).Value & vbCrLf
        End If
        
        'C列(3)の値が空じゃなかったらタイトル文字を表示
        If Cells(gyou, 3).Value <> "" Then
            hyouji = hyouji & "・" & Cells(3, 3).Value & vbCrLf
        End If
        
        'D列(4)の値が空じゃなかったらタイトル文字を表示
        If Cells(gyou, 4).Value <> "" Then
            hyouji = hyouji & "・" & Cells(3, 4).Value & vbCrLf
        End If
        
        '作った文字をE列(5)に表示
        Cells(gyou, 5).Value = hyouji
        
        '次の行で使うために表示文字の中身を空にしておく
        hyouji = ""
    
    Next
 
End Function
 
 
簡単に説明しておきます。
 
このプログラムでは、For ~ To とNextで囲まれた部分が3回実行され、If文で「セルが空じゃない場合に文字を表示する」ことを書いています。
 
 
文字と文字をくっつけるには、+(プラス)ではなく、&(アンパサンド)を使ってます。
 
+を使った場合、結合する文字が「数字」だった場合、足し算してしまうことがあります。
&を使うと必ず文字として結合してくれますので、間違いがないですよ。
 
 
実行結果です。
 
 
結果列に表示されました!
 
 

まとめ

いかがでしたでしょうか?
 
Cells関数のValueは、セル値の取得と設定が両方できるので便利ですね。
 
数式を使っても同じことができますが、「数字が入っている場合」といった条件が必要な場合、マクロ(VBA)の方が簡単に実現できますよ。
 
一度、お試しくださいね。
 

スポンサーリンク

コメント

  • トラックバックは利用できません。

  • コメント (0)

  1. この記事へのコメントはありません。

だーしゅ
IT関係のお仕事してます。
Excel大好き。

[当ブログについて]

最近のコメント

  • kongaragatta { だーしゅさん、ご返事ありがとうございます。 まずは、だーしゅさん案で自分なりにできるかどうかトライしてみます。 } – 7月 03, 6:35 AM
  • だーしゅ { 言葉が良く無かったですね。 「O列がFOR文の最初の位置になる」のような意味でした。 実現するにはいろんな方法があると思います。ご参考まで。 } – 6月 29, 5:37 PM
  • kongaragatta { だーしゅさん、案をありがとうございます。 なるほど!月数を取得するやり方は考えていませんでした。やはり自分だとスキルに限界があるのでどうも柔軟に考えにくいですね。 ひとつ質問ですが、「O列を起点とし、年月を固定的に設定」の”固定的に設定”とはどのように設定するということでしょうか? } – 6月 29, 8:04 AM
  • だーしゅ { kongaragattaさん、コメントありがとうございます。 いろんな方法があると思いますが、思いついた案を書いておきますね。 ・DATEDIF関数で開始年月日と終了年月日の月数を取得 ・O列を起点とし、年月を固定的に設定 ・FOR文で「月数」の数分、セルを右方向に移動 →開始日と同じ年月の場合、●を表示 →IF文で一つ目と判断した場合、〇を表示 →3ヵ月単位はMOD関数で判定 いろいろお試しくださいね。 } – 6月 28, 4:59 PM
  • kongaragatta { だーしゅさん、こんにちは 現在、手作業でExcel作表しているものを少しでも自動化したいと考えています。但し、VBAやマクロは初心者のため、だーしゅさんに是非アドバイスやお力添えをいただければと思います。 L列:開始年月日(原則、当該月の1日)、M列:終了年月日(原則、開始年月日より2年後の月末)、O列~:L列の開始年度及び1~12月の各列があります。L及びM列は、更新されます。 全体件数としては、250件程度。 L列の開始月をキーにO列以降の3か月ごとに黒丸の記号を入力したい。但し、初回の月は、白丸の記号。たとえば、開始年月日が2018/6/1ならばO列には2018年度の6月列に白丸の記号がつき、9月列及び12月列、翌年の2019年度3月に黒丸記号のように、それがM列の終了年月日まで表示したい。 何か良い案があったらご教示ください。よろしくお願いします。 } – 6月 28, 6:11 AM
  • MIZUMIZU { だーしゅさん ご連絡ありがとうございます。こちらで試してみます。また解らないときはご連絡いたします。お手数をお掛けいたします。 } – 6月 04, 2:23 AM