エクセルの基本的な使い方 その1

今回はエクセルの基本的な使い方の中からいくつかを書いてみようと思います。本当に基本的なことですが、怒らないでくださいね。

複数セルの内容を一つのセルに表示する

別々のセルにある数値や文字列を一つのセルにまとめたいときには、&(アンド)でつなぐことで表示することができます。(下図ではC1セルとD1セルをつなげてE1セルに表示させています。)

商品名や番号などそれぞれ記載しておいて、違うセルにまとめて表示するといった使い方が一般的でしょうか。番号を間違っていたときなどに後から修正するのが簡単です。もちろん3つ以上のセルもまとめることができます。

図の中でE2セルに表示しているように=(イコール)の後の関数の中身を表示させるようにする場合には、’(アポストロフィ)を最初につけることで表示させることができます。VBAなどではコメントをプログラムの中に書き込むために使用します。いわゆるコメントアウトですね。

曜日を表示する

次は曜日の表示方法です。こちらは書式設定を変える方法です。

セルに今日の日付を入れ、そのセルを選択しマウスを右クリックします。すると一覧にセルの書式設定という項目が表示され、クリックすると下図のように表示が出ます。表示形式タブの一番下のユーザー定義を選択し、種類のところにaaaまたはaaaaと入力すればOKです。

aaaとすると今日(8/25)だと金、aaaaとすると金曜日という表示になります。ただ、見かけは曜日になっていますが、実際は日付に当たる数値が入っています。

エクセルで人工無能と遊ぶ

こんにちは。

今回はエクセルを使って人工無能(登録されたパターンを使って返答する)とチャットをしてみたいと思います。

左が私が入力したもので、右がコンピュータが返答したものです。少しチャットっぽさを出してみたつもりですが、見た目は適当です。綺麗に作りたい人は工夫してみてください。

自分が発言する内容を入れ、送信ボタンを押す(マクロの実行)と自分の発言がセルに出力され、それに対する返答が返されます。上記の画像の会話が少しおかしいのは、コンピュータがランダムで返事を返すように設定しているからです。

今回は単語を3つとそれに対する返事をあらかじめ決めていました。

自分の発言→登録内容と比較→登録されたもの同じであれば決められた返事を返す→登録されていないものであればランダムな返答を返すという設定にしています。

あいさつの言葉のみ登録しており、登録された内容なので決められた返答を返しています。それ以外にはランダム返答の中からvlookup関数を使って拾い出しています。

もう少し登録する言葉を増やしたり、前方一致とか後方一致ができるのであればやってみても良いと思います。

 

簡単な説明

セルに計算式が入っているのは以下のとおりです。
上画像
・会話内容の右の数字(セルF1)=COUNTA(E2:G24)

下画像
・返事候補の右のおはようと表示されているセル(セルJ2)=IF(ISERROR(VLOOKUP(B2,J3:K25,2,FALSE))=TRUE,L2,VLOOKUP(B2,J3:K25,2,FALSE))

・ランダム返答の下反対です・・・と表示されているセル(セルL2)=VLOOKUP(RANDBETWEEN(1,43),L3:M45,2,FALSE)

マクロについて

正方形長方形の図形を作成し、マクロの登録→新規作成から以下のコードを入れています。


Sub 正方形長方形1_Click()
    Cells(2 + Cells(1, 6), 5) = Cells(2, 2)
    Hantei
End Sub
Sub Hantei()
    Cells(2 + Cells(1, 6), 7) = Cells(2, 10)
End Sub

Excel VBAを使った模擬ロト6

今回はExcelのVBAを使用して、自分が選んだ数字がどのくらい当たるのかを調べてみたいと思います。

ロト6の当選は以下の通りです。

1等 6個一致
2等 5個一致+ボーナス数字と一致
3等 5個一致
4等 4個一致
5等 3個一致

当選金額と確率が知りたい方は公式サイトで。

Excelのランダム関数を使用しますが、今回使用したプログラムが完全にランダムかは微妙なところです・・・

まず、6つの数字を入力します。(重複はなし)
試行回数を入力し、マクロの実行ボタンを押します。パソコンのスペックにもよりますが、回数は10万回くらいが目安です。一回一回表示させるようにすると、実行速度がかなり遅くなってしまうので、まとめて表示させるようにしています。

試しに100,000回実行した結果です。そんなに問題はなさそうです。

一応下にVBAで書いたコードを載せておきます。重大なミスなどがありましたら申し訳ありません。
一応わかりやすいように書いたつもりですが・・・


Sub 正方形長方形1_Click()
    Dim Chz(5)
    Chz(0) = Cells(4, 2)
    Chz(1) = Cells(4, 3)
    Chz(2) = Cells(4, 4)
    Chz(3) = Cells(4, 5)
    Chz(4) = Cells(4, 6)
    Chz(5) = Cells(4, 7)
            
    Dim a(6)    '結果
    Dim Bonus   'ボーナス数字判定
    Dim seikai(7)   '正解数
    Randomize
    While m < Cells(2, 9)  '回数:ここではセルI2
        Bonus = 0   'リセット
        goukei = 0
    '乱数作成
        For i = 0 To 6
            a(i) = Int(Rnd() * 43) + 1
            For j = 0 To i - 1
                If a(i) = a(j) Then
                    i = i - 1
                End If
            Next
        Next
    '比較
        For k = 0 To 5
            If a(6) = Chz(k) Then
                Bonus = 1
            End If
            
            For n = 0 To 5
                If Chz(k) = a(n) Then
                    goukei = goukei + 1
                End If
            Next
            
        Next
        
        If Bonus = 1 And goukei = 5 Then
            seikai(7) = seikai(7) + 1
            
            Else: seikai(goukei) = seikai(goukei) + 1
        End If
        
        m = m + 1
        
    Wend
    '表示
    For l = 0 To 7
        Cells(4, 9 + l) = seikai(l)
    Next

End Sub