オンライン講座 質問と回答

無料・有料のオンライン講座で寄せられたメッセージの一部を紹介致します。

[8827]ElseIfを使った条件分岐

2017-09-04 21:33:00 受講生さんからの投稿です。

・Elseif 条件 then
 手打ちする中で理解が深まった。
 (同じものはコピペで行い、修正する)

・select case構文 すっきりしていて見栄えもいいね。ぜひマスターしたい!

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8826]複数条件を組み合わせた条件分岐

2017-09-04 06:13:57 受講生さんからの投稿です。

・西暦に変更するには昭和なら+1925する
          平成なら+1988する
 と和暦を西暦に変更できる。(なるほど)

・男性女性を点数ごとに合否を分けるには
If文の中にIf文を作る。
 まずは何かしら動くマクロを求めたいところに書くところからスタート

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8825]If文とForNext構文を組み合わせる

2017-09-03 15:34:51 受講生さんからの投稿です。

for next 構文
if 文の練習をした。

めちゃくちゃ時間がかかったけど、声に出して練習することで
for next 構文の形が言えるようになってきた。

まずは、求めたい(答えを返したい)セルに入るマクロを書くところから
スタートだ。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8796]残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ

2017-08-28 21:35:59 受講生さんからの投稿です。

小川先生

RANK関数とFor ~ Eachを使用して、ベスト4を一覧出力できました。
どうもありがとうございました。

>受講生 さん:
>
>基礎編でもできますけどね。
>
>発展編1の知識でいくなら、 worksheetfunction.rank 関数で各値の順位が分かるので、その値が 1-10 のときはなんたら、とすればオシマイ。
>
>基礎編でいくなら、まずは最大のものを求める。
>次にまた同じようなループをまわし、その最大値を超えない最大値を調べる。
>また次にまた同じようなループをまわし、その最大値を超えない最大値を調べる。
>…
>という具合です。
>
>
>> 小川先生、お世話になっております。
>> 下のコメント欄の4977で、「発展編1の知識があれば、ベスト10の出力は可能」とのことですが、方針すら思い浮かびません。
>> 何かヒントを頂けると助かります。
>

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8786]残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ

2017-08-28 11:21:45 受講生さんからの投稿です。

小川先生、お世話になっております。
下のコメント欄の4977で、「発展編1の知識があれば、ベスト10の出力は可能」とのことですが、方針すら思い浮かびません。
何かヒントを頂けると助かります。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8757]勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

2017-08-23 12:14:50 浦山大さんからの投稿です。

久しぶりにコメントを記載します。

動画は18番まで閲覧致しました。
動画は止めながら一緒にマクロを作っています。
発想が貧困?
なので先に教えてもらって動きを掴む方が早いかなと思い、
フォームを教えてもらうつもりで拝見してから作業というステップにしています。

作業は11まで進めました。
動画時点で「そうなんだ」で全然動きが伴っていないので、
毎日1からやれる範囲まで通しで問題を解き続けています。
問題10までなら5回くらいずつ書いたと思います。

書く度に変化を感じています:
※必ず1行なんでもいいので書く→次に考えるが癖になった
※F8でテストしながら書く→1ステップずつ修正しながら拡大の意味が体得できた
※テストしている時に上手く動かないと感じたら何をしたいのかを紙に書いて、
自分が動かしたいことを文や図に起こすようになった(案外、出来ない時って図示や文にしようとしている自分自身があいまいなんですね)

途中経過でした。
9月半ばまでには25番くらいまでは書けるようになりたいと思います。

以下は一時間くらいかかって完成させた回答です。
まだ残り24個も成長する材料があると思うと、
自分がどこまで行ってしまうのか?楽しみです。
仕事で使えそうな問題も出てきました。引き続き宜しくお願いします。

Sub iwai()
    Dim goukei
    Dim soukei
    Dim gyo
    Dim migi
    For gyo = 4 To 9
            goukei = 0
        For migi = 4 To 10
            If Range("B" & gyo).Value = Range("I" & migi).Value Then
                goukei = goukei + Range("j" & migi).Value
            End If
        Next
        soukei = soukei + goukei
        Range("D" & gyo).Value = goukei
        Range("E" & gyo).Value = Range("c" & gyo).Value + goukei
    Next
    Range("D10").Value = soukei
    Range("E10").Value = Range("C10") + soukei
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8737]とびとびに存在するデータを拾って加工する

2017-08-17 16:13:02 浦山大さんからの投稿です。

[1]は何とか○*3-2と○*3-1って思いつきました。
[2]は○*4-2は出来たのですが、そのあとが思いつかず…
模範解答を見たら「あら~…」でした。

規則性が捉えられなかったので悔しいです。
とりあえず、今日の朝11時頃から始めて、15時頃までかけて、
問1~7まで一通り模範解答通りのマクロが書けました。

繰り返しているとハナコのステップが体に落ちてくる感じがします。
何回も何回も繰り返して淀みなく作業出来るまで持っていきます。
途中経過でした。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8736]ElseIfを使った条件分岐

2017-08-17 12:22:11 浦山大さんからの投稿です。

小川先生、質問です。
select caseのコードを作成しておりました。

Sub renshu()
   Dim gyo3
   For gyo3 = 2 To 11
        Select Case Range("D" & gyo3).Value
            Case Is >= 80
                Range("E" & gyo3).Value = "A判定です"
            Case Is >= 60
                Range("E" & gyo3).Value = "B判定です"
            Case Is >= 40
                Range("E" & gyo3).Value = "C判定です"
            Case Else
                Range("E" & gyo3).Value = "D判定です"
        End Select
   Next
End Sub


↑これは自分で何も見ないで作成できるようになりました。
動作も確認済みです。タブの位置も気にしながら作成しています。

以下、変数に纏めてすっきりさせられないかな、
と思って作成してみました。
しかし、値がExcelに入りませんでした。
F8を押すとエラーもなく最後まで動作はしているようです。

Sub renshu_error1()
   Dim hani
   Dim gyo2
   For gyo2 = 2 To 11
   hani = Range("E" & gyo2).Value
        Select Case Range("D" & gyo2).Value
            Case Is >= 80
                hani = "A判定です"
            Case Is >= 60
                hani = "B判定です"
            Case Is >= 40
                hani = "C判定です"
            Case Else
                hani = "D判定です"
        End Select
   Next
End Sub


変数にしないで実行をすれば通常通りに進みます。
Excelのバージョンは2007です。

質問ばかりで恐縮ですが、
以下のように書くと怒られました。
これは、変数gyo2の中身を指定してあげる前に、
gyo2を使用しようとしているから、
という感覚でいればよいでしょうか?

Sub renshu_error2()
   Dim hani
   Dim gyo2                                 'Range’メソッドは失敗しました’_Gloval’オブジェクト
   hani = Range("E" & gyo2).Value   'gyo2を指定する前にgyo2が出てるから?
   For gyo2 = 2 To 11
        Select Case Range("D" & gyo2).Value
            Case Is >= 80
                hani = "A判定です"
            Case Is >= 60
                hani = "B判定です"
            Case Is >= 40
                hani = "C判定です"
            Case Else
                hani = "D判定です"
        End Select
   Next
End Sub


いずれにせよ、
真似ができるようになったら先へ、先へ進めています。
大切なところは理解できるようになってきましたし、
先生の真似をしながら記載も出来るようになってきました。
感謝しています。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8720]If文とForNext構文を組み合わせる

2017-08-15 12:22:18 浦山大さんからの投稿です。

この問であれば淀みなく記載できるようになりました。
[1]書式も付けてみたかったので、自分なりに調べて動くマクロを作りました。

Sub jouken_hantei1()
        Dim k
        For k = 2 To 11
        If Range("c" & k).Value > 100 Then          'c2が100より大きかったら(条件)
             With Range("A" & k)
                .Value = "○"                                   'A2を「○」にする(処理)
                .Font.Name = "meiryo ui"
                .Font.Color = vbBlue
                .Font.Size = "15"
             End With
        Else
             With Range("A" & k)
                .Value = "×"                                   'A2を「×」にする(処理)
                .Font.Name = "meiryo ui"
                .Font.Color = vbRed
                .Font.Size = "15"
             End With
        End If
    Next
End Sub


with~はネットで調べました。
似た要領で、元に戻す方法もマクロを作ってみました。

Sub jouken_hantei1_sakujo()
    Dim k
    For k = 2 To 11
        With Range("A" & k)
            .Value = ""
            .Font.Name = "MS明朝"
            .Font.Color = vbBlack
            .Font.Size = "10"
        End With
    Next
End Sub


※元に戻す時に、「標準設定に戻す」って簡単に書けないか?
と感じました。

調べているとありそうですが、きっともっと先のことだろうと考えます。
今は基礎を固める時期かと思いますので、まず課題として与えられていることを吸収しに次に行きたいと思います。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8715]If文とForNext構文を組み合わせる

2017-08-14 21:08:03 浦山大さんからの投稿です。

この部分については、
模範解答をちらっと1回見ただけでなんとか出来ました。

気づいたこと:
※問題毎に一つ一つ「はじめから」書いた方が練習になる
→途中、「ん?コピペして数字変えたら問題1→2は一瞬でできるな」って思いましたが、熟す数の方が大切かと思ったので全部呪文を唱えながら一から実施という流れに変えました。

このファイルを1回実施するだけで7つくらいマクロを書けました。

※「何もしない」はElse書かなくてもOK([2])
最初にチャレンジした際は「何もしないけどElse書くのか?」と思って記載したままマクロ書きました。
だけど、あとで「…なくても動くんじゃないか?」と思って試したらElseなくても動きました。
そして、動画を拝見したら省いてよしとのことでした。

多少前後感がありますが、
★問題見て困る→試行錯誤する→通勤時(帰宅時)に動画見る
→先生の解説聞いてあとから全部理解する
→明日、また同じ問題に取り組む

というスパイラルで進めていけそうです。
できれば、事前に次の動画まで見、
「軽く予習をする」を★部分に入れてスパイラル回せるようにしていきます。

※先日頂いたコメントの自分なりの添削、
やりますのでお待ち下さい。

総じて、取り組む前に作戦を考えることと、試行錯誤することが楽しいです。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8712]複数の記号に挟まれた文字列を取り出す

2017-08-14 13:31:09 受講生さんからの投稿です。

【動画9】 文字列を加工してデータ転記する(その2)をヒントに
D列の文字列を3分割にする方法でマクロを書いてみました。
知識の再利用と文字列の切り出しが面白くなってきました。

Sub mondai()
    Dim mae
    Dim ato
    Dim kouzou
    Dim kouzoumae
    Dim kouzouato
    Dim gyou
    For gyou = 2 To 51
        kouzou = Range("D" & gyou).Value
        mae = InStr(kouzou, "/")
        kouzoumae = Left(kouzou, mae - 1)
        If kouzoumae = "RC" Then
            Range("F" & gyou).Value = "鉄筋コンクリート"
        Else
            Range("F" & gyou).Value = "鉄骨鉄筋コンクリート"
        End If
        kouzouato = Mid(kouzou, mae + 1)
        ato = InStr(kouzouato, "/")
        Range("G" & gyou).Value = Left(kouzouato, ato - 1)
        Range("H" & gyou).Value = Mid(kouzouato, ato + 1)
        Range("I" & gyou).Value = Range("F" & gyou).Value & Range("H" & gyou).Value & "建ての" & Range("G" & gyou).Value & "階部分"
    Next gyou
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8689]各資料ごとに1番からの番号を割り振る。AutoFill機能より便利なマクロ

2017-08-12 19:35:42 受講生さんからの投稿です。

ForNext構文ですぐに変数(番号)を記入し、変数を可変しながら番号をふるマクロを考えてみました。動画のようにテストを実施しながら作成しました。
動画の見本と異なるのは、1つ下の行と比べて同じか違うかによってわりふる数字を変える点です。

'問題[1]
Sub warifuribangou()
    Dim id
    Dim gyo
    id = 1
    For gyo = 4 To 19
        Range("B" & gyo).Value = id
        If Range("C" & gyo).Value <> Range("C" & gyo + 1).Value Then
            id = id + 1
        End If
    Next gyo
End Sub

'問題[2]
Sub nantoka()
    Dim id
    Dim gt
    Dim gyo
    id = 1
    gt = 1
    For gyo = 4 To 19
        Range("B" & gyo).Value = id
        Range("C" & gyo).Value = gt
        gt = gt + 1
        If Range("D" & gyo).Value <> Range("D" & gyo + 1).Value Then
            id = id + 1
            gt = 1
        End If
    Next gyo
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8505]表を解析して1行のリストを作る、1行のリストを解析して表にする(その2)

2017-07-03 22:16:38 受講生さんからの投稿です。

小川先生

添削と返信ありがとうございました。
(コメント:8489)
インデントも気をつけたいと思います。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8470]表を解析して1行のリストを作る、1行のリストを解析して表にする(その2)

2017-06-30 06:06:33 受講生さんからの投稿です。

初期化(tiku = “”)のタイミングですが少し早い部分に書いてみました。
問題ありませんでしょうか。
発展編で出てくるDebug.Printでtikuの中身の様子も確認済です。

 
Sub Createlist01()
    Dim hida
    Dim migi
    Dim tiku
    migi = 2
    For hida = 2 To 27
        If Range("A" & hida - 1).Value <> Range("A" & hida).Value Then
            Range("E" & migi).Value = Range("A" & hida).Value
            Range("F" & migi).Value = Range("B" & hida).Value
            If migi > 2 Then
                Range("G" & migi - 1).Value = Mid(tiku, 2)
                
                Debug.Print tiku
                tiku = "" '[※]
                Debug.Print tiku
            
            End If
            migi = migi + 1
        End If
    tiku = tiku & "," & Range("C" & hida).Value & "地区"
    Next
    Range("G" & migi - 1).Value = Mid(tiku, 2)
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8415]表を解析して1行のリストを作る、1行のリストを解析して表にする(その2)

2017-06-23 18:30:20 受講生さんからの投稿です。

お世話になります。
現在、エクセルマクロ・VBA基礎編フォローアップ を学習していますが、6月末でキャンペーン終了ということなので、不安すぎて、まだ基礎編フォローアップに苦戦しながらも、先走り発展編1を購入しましたが、いつになれば取り掛かれるのかわかりません。
でも、少しずつでは、ありますが毎日学習を進めていっています。
現在、基礎編フォローアップ動画18の問題2で戸惑っています。
問題1は理解できたのですが、IF文の中のtiku=””の意味が、まったく理解できずに、マクロを書くことができません。
何度も間違っても、うまくいきません。

[ 続きを読む ]  返信件数:7件  [ 動画を見る] 

[8351]勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

2017-06-13 21:45:01 受講生さんからの投稿です。

お世話になります。
下記の記載したprogramと回答のプログラムが、違うことによって不都合が生じることになるのでしょうか?
下記に記載したプロフラムはループの後に出力先を記載せずに、IF文後に
記載しています。実行した場合、回答と同じ値が導いていますが、回答のように、ループ後の出力先を記載することが、いいのでしょうか。
記載したprogramのgoukei の場合は、最終のループ後に記載しています。
そのあたりのことについて、わかりませんでしたので、宜しくお願いします。


[code]Sub rensyu1()
Dim goukei
Dim gyo
Dim migi
Dim hida
Dim syoukei
For gyo = 4 To 9
syoukei = 0
For migi = 4 To 10
If Range(“I” & migi).Value = Range(“B” & gyo).Value Then
syoukei = syoukei + Range(“J” & migi).Value
goukei = goukei + Range(“J” & migi).Value
End If
Range(“D” & gyo).Value = syoukei
Range(“E” & gyo).Value = Range(“C” & gyo).Value + syoukei
Next
Next
Range(“D10”).Value = goukei
Range(“E10”).Value = Range(“C10”).Value + goukei
End Sub[/code]

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8149]出現回数を数える。CountIf関数がやっていることをマクロで書くと?

2017-05-22 13:37:42 受講生さんからの投稿です。

Sub nantoka()
Dim goukei
Dim gyo
Dim migi

For migi = 4 To 6
goukei = 0
For gyo = 4 To 18
If Range(“C” & gyo).Value = Range(“E” & migi) Then
goukei = goukei + 1

End If
Next
Range(“F” & migi).Value = goukei
Next
End Sub

お世話になります。
Range(“F” & migi).Value = goukei
のプログラムを書くときに、
NextとNextの間に書くことが、
自力で書くときに迷います。
homeshift↓↓↓で選択するとき
最初のForNext構文が完成させたときに、
出力先を書くことで、別物と判断している
みたいで、ワンポイントアドバイス
よろしくおねがいします。

[ 続きを読む ]  返信件数:3件  [ 動画を見る] 

[8124]勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

2017-05-14 08:41:52 受講生さんからの投稿です。

[3]
[2]で作ったマクロを改変し、さらに、セルD10、セルE10に各列の合計額を記入するマクロとしなさい についてセルD10 にD4からD9の合計額を表示するというマクロを作る場合にはどのような式で書くことができますか?
[1][2]については以下のようなマクロで問題なく動いたのですが、D列の値をそれぞれの項目について値を入れていくというマクロ(累積値ではなく)になったので、合計のマクロが作れませんでした。Range(“D10”).value=Sum(”D4:D9”).valueというのも試しましたが、15100という値のみ入りました。アドバイスいただければ幸いです。

Sub test()
 Dim harai
 For harai = 4 To 9
 Dim koumoku
 koumoku = Range("B" & harai).Value
 Dim iwai
 iwai = Range("D" & harai).Value
 Dim retsu
 For retsu = 4 To 10
    If Range("I" & retsu).Value = koumoku Then
    iwai = iwai + Range("J" & retsu).Value
    End If
  Next
  Range("D" & harai).Value = iwai
  Range("E" & harai).Value = Range("D" & harai).Value + Range("C" & harai).Value
  Next
  
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8070]表を解析して1行のリストを作る、1行のリストを解析して表にする(その1)

2017-05-03 16:01:32 柴田 邦彦さんからの投稿です。

基礎コースフォローアップを受講中です。

[受講方法]
1.動画を見る前に、自力で課題(ドリル)にチャレンジしてみる。
2.動画を見る
3.小川先生のロジックと自分のロジックを比較する。
4.再度、小川先生のロジックでマクロを作成する。
時間は要しますが。上記の4ステップで学習しております

[質問]
一般的にマクロに正解はないと言われますが…
自力で作成したマクロがスマートにできてるかどうかは別として、
マクロの結果が同じであるならば、小川先生の解答と同じでなくても気にする必要ないのでしょうか?
それとも、結果が同じであっても、ロジックの考え方を改めるべきでしょうか?

[質問の意図]
与えられた課題ならば、実際に小川先生のロジックでマクロを組む方が、正解だと考えます。
しかしながら、実際に業務でマクロを自力で作成する場合は、細かく結果を見ながら試行錯誤をして作りあげていくことになり、解答があるわけではありません。(誰かに善し悪しを指導してもらえるわけでもない)
よって、必ずしも、スマートで誰が見ても分かりやすいマクロになるとは限りませんし、結果(ゴール)オーライでマクロを作ることになります。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8049]とびとびに存在するデータを拾って加工する

2017-04-25 05:21:01 受講生さんからの投稿です。

小川様
お世話になります。
マクロの質問ではないのですが、動画10分ころにif文を使って確認する場面がありますが、if文をコピーした後Ctrl+↓ だと、最終行まで選択されてしまうと思うのですが、190行までしかコピペされていません。いったいどうやったのですか。それとも最終行までコピペされたのをなにかショートカットで消しているのですか。細かい質問ですみません。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[7764]文字列を様々に解析して条件分岐

2017-02-28 16:04:47 新見陽子さんからの投稿です。

問題[2]で、>0を入れずに以下のように作成しても、マクロが実行されたのですが、なぜでしょうか?
マクロが気を利かせてくれたのでしょうか?これでも不都合はないですか?

Sub miyakojima()
    Dim gyo
    For gyo = 2 To 22
        If InStr(Range("B" & gyo).Value, "都島") Then
            Range("J" & gyo).Value = "都島グループです"
        End If
    Next
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[7630]残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ

2017-02-09 07:05:36 受講生さんからの投稿です。

小川先生

コメント有難うございます。
「英単語1語の言葉」の選択には、要注意ですね。

「ハンガリアン記法」の動画を見直してみたいと思います。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[7604]残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ

2017-02-05 14:09:18 受講生さんからの投稿です。

小川先生

最大値が複数存在した場合についてのコードを投稿します。
よろしくお願いします。

【課題を以下の通り、設定しています。】
 問題[1] 一番得点の高い人が複数いた場合でも抽出可能にする
 問題[2] 残業時間が一番多い人が複数いた場合でも抽出可能にする
 問題[3] 残業時間が一番多い人が複数いた場合でも抽出可能にする

'**************************************************************
'問題[1] 一番得点の高い人が複数いた場合でも抽出可能にする
'**************************************************************

Sub katinuki()
    
    Dim gyou As Long
    Dim kati As Long
    
    '処理1
    kati = 2
    For gyou = 2 To 11
        If Range("G" & kati).Value < Range("G" & gyou).Value Then
            kati = gyou
        End If
    Next gyou
'    Range("J" & kati).Value = "最高点です" '←不要かも

    '処理2
    For gyou = 2 To 11
        If Range("G" & kati).Value = Range("G" & gyou).Value Then
            Range("J" & gyou).Value = "最高点です"
        End If
    Next gyou
End Sub

'**************************************************************
'問題[2] 残業時間が一番多い人が複数いた場合でも抽出可能にする
'**************************************************************

Sub kati2()

    Dim gyou As Long
    Dim Migi As Long
    Dim kati As Long
    
    '処理1
    kati = 6
    Migi = 4
    For gyou = 6 To 33
        If Range("C" & kati).Value < Range("C" & gyou).Value Then
            kati = gyou
        End If
    Next gyou
'    Range("K" & Migi).Value = Range("B" & kati).Value '←不要かも
'    Range("L" & Migi).Value = Range("C" & "5").Value  '←不要かも
'    Range("M" & Migi).Value = Range("C" & kati).Value  '←不要かも
   
    '処理2
    For gyou = 6 To 33
        If Range("C" & kati).Value = Range("C" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("C" & "5").Value
            Range("M" & Migi).Value = Range("C" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou
End Sub

'**************************************************************
'問題[3] 残業時間が一番多い人が複数いた場合でも抽出可能にする
'**************************************************************

Sub kati3()
    
    Dim gyou
    Dim Migi As Long '追加
    Dim kati
    Dim retu
    Migi = 4 '追加
    
    retu = "C"
    kati = 6
    
    '処理1
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("C" & gyou).Value Then
            retu = "D"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("D" & gyou).Value Then
            retu = "D"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("E" & gyou).Value Then
            retu = "E"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("F" & gyou).Value Then
            retu = "F"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("G" & gyou).Value Then
            retu = "G"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("H" & gyou).Value Then
            retu = "H"
            kati = gyou
        End If
    Next gyou
    
'    Range("K" & Migi).Value = Range("B" & kati).Value '←不要かも
'    Range("L" & Migi).Value = Range(retu & "5").Value '←不要かも
'    Range("M" & Migi).Value = Range(retu & kati).Value '←不要かも
    
    '処理2
    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("C" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("C" & "5").Value
            Range("M" & Migi).Value = Range("C" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("D" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("D" & "5").Value
            Range("M" & Migi).Value = Range("D" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("E" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("E" & "5").Value
            Range("M" & Migi).Value = Range("E" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("F" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("F" & "5").Value
            Range("M" & Migi).Value = Range("F" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("G" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("G" & "5").Value
            Range("M" & Migi).Value = Range("G" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("H" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("H" & "5").Value
            Range("M" & Migi).Value = Range("H" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou
End Sub

[ 続きを読む ]  返信件数:5件  [ 動画を見る] 

[7578]とびとびに存在するデータを拾って加工する

2017-01-30 13:04:53 新見陽子さんからの投稿です。

はじめまして。2017年12月からこちらでマクロを勉強し始めました。
フォローアップでは、まず自分でマクロを作ってみてから答えや動画を見ています。
今回、自分で書いたマクロでは数列は使ってなかった(2015年2月5日の匿名さんと、そっくりのマクロでした)のですが、
動画では数列を使っていました。この式で数値がこう変わる、って結果はわかるのですが、自分でこの式を導き出す術がわかりません。
中学レベルの数列すら全く理解していないので、別サイトで数列の勉強からし直そうとしてみたのですが、
等差数列とかますます理解できなくなり絶望的になっています。
こんなことでは便利なマクロが作れるようにはなれそうにもない、と意気消沈。
やっぱり数列を理解できないと、先々発展できないでしょうか?

[ 続きを読む ]  返信件数:6件  [ 動画を見る] 

[7430]各資料ごとに1番からの番号を割り振る。AutoFill機能より便利なマクロ

2016-12-16 13:08:20 受講生さんからの投稿です。

if、elseを使って問題を解いてみました。
変数はfor next 構文の外で設定していれば、構文の下のコードには反映されないと勝手に思っていたのですが、
nextの下にコードを書いても、変数リセットの指示を小人ちゃんに出さなければ元に戻らないんですね!

Sub rensyu2()    
    Dim ban
    Dim gyo
    Dim cno
    ban = 0
    cno = 1
    For gyo = 4 To 19
        If Range("D" & gyo).Value <> Range("D" & gyo - 1).Value Then
            ban = ban + 1
            cno = 1
        Else
        cno = cno + 1
        End If
        Range("B" & gyo).Value = ban
        Range("C" & gyo).Value = cno
    Next
        
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[7423]複数の表の間でのマッチング。VLookUp関数がやっていることをマクロで書くと?

2016-12-15 16:58:29 受講生さんからの投稿です。

お世話になっております。一つこの例題について伺いたいことがあります。
もし、キャンペーン応募が同じ人から複数件あったとして、左の表の同じセルに「、」を打って複数件足していくような場合を想定して下記のようなコードを書きました。
しかし、F5で実行を押すたびに左の票の数が足されていってしまいます。修正箇所としてどの点を直せばよろしいでしょうか。
ご教授宜しくお願い致します。

Sub sakusei()
    Dim hida
    Dim migi
    Dim goukei

    For migi = 11 To 23

        For hida = 4 To 29
        goukei = Range("C" & hida).Value
               
            If Range("E" & migi).Value = Range("A" & hida).Value Then
             goukei = goukei & "," & Range("F" & migi).Value
            End If
        Range("C" & hida) = goukei
        Next
    Next
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[7421]勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

2016-12-15 11:11:20 受講生さんからの投稿です。

お世話になっています。一つ聞きたいことがあります。
下記のように、 Range(“D” & hida).Value = goukeiをfor next (migi)の構文内で実行すると、今月支払いのない成人祝いの欄は「空白」で表示されます。
構文外にこの式を置くと「0」と表示されるのですが、構文内に置くとなぜ「空白」になってしまうのでしょうか。
Sub rensyu3()
Dim goukei
Dim migi
Dim hida
For hida = 4 To 9
goukei = 0
For migi = 4 To 10

If Range("I" & migi).Value = Range("B" & hida).Value Then
goukei = goukei + Range("J" & migi).Value
Range("D" & hida).Value = goukei
End If
Next
Next
End Sub[/code

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[7264]勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

2016-11-06 12:02:44 受講生さんからの投稿です。

小川先生
お世話になっております。
単純ですが、シートにある勘定科目毎に伝票を集計し、合計を別シートのP/Lに書き出すマクロです。
1万行以上と金額が億単位だったので、マクロを動かしたら、ものすごくPCのスピードが落ちたので、
何10分まったら終わるのかとおもい途中でやめました。こういう場合はSUMIF関数の方がよいのでしょうか。
ちなみにPCのスペックは問題ありません。宜しくお願いします。

 Option Explicit
Sub hoge()
    Dim gyo As Long
    Dim goukei As Currency
    Dim kubun As Long
    For kubun = 12 To 226
        goukei = 0
        For gyo = 2 To 11419
            If Worksheets("4月 (2)").Range("C" & kubun).Value = Worksheets("Sheet1 (2)").Range("K" & gyo).Value Then
                goukei = goukei + Worksheets("Sheet1 (2)").Range("AE" & gyo).Value
            End If
                Worksheets("4月 (2)").Range("E" & kubun).Value = goukei
        Next
    Next
    
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[7012]残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ

2016-09-07 20:05:40 ゲストさんからの投稿です。

残業時間が最大な人が複数いた時に該当者、全て抽出する方法は?

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[6689]表を解析して1行のリストを作る、1行のリストを解析して表にする(その2)

2016-06-01 17:11:08 ゲストさんからの投稿です。

動画その18の音声が小さくて聞き取れなのですが、大きくならないのでしょうか?

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 


各講座ごとのメッセージを見る場合はこちら

 

まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ