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

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

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

2021-05-11 09:31:03 受講生さんからの投稿です。

元データと入力済みデータ、プログラムをつけて質問しなおします。
よろしくお願いします。

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

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

2021-05-06 22:20:11 受講生さんからの投稿です。

1.勤怠の元データをシステムに入力し、
  システムからエクエルにデータを落とします。
2.この元データと入力済データを比較し異なっていたら
  データを赤くする。

この2の段階をVBAで作りたいと思っています。
問題なのはこの中のtaikin1 とtaikin2 を比較する部分です。

単純に半日勤務課か一日勤務かなら問題はないのですが、
出勤時間が午前中で退勤時間が午後になる場合、
システムの仕様で退勤時間が12:00 になり
備考欄に文字列で退勤時間を入力するようになっています。

この午前・午後にわたる半日勤務のとき、
データが赤くなるときとならないと気が合って困っています。

この部分に★で印をつけてありますので
原因の説明と対処方法を教えてください。

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

[12974]条件に一致するデータを別シートに転記する

2021-04-15 13:47:15 受講生さんからの投稿です。

小川慶一 様
この度はご返信ありがとうございます。
早速ですが、エクセルマクロ・VBA基礎編フォローアップ ベーシックの問題に取り掛かりました。
しかし、何度解いてもよくわからない点があります。

★【動画6】 条件に一致するデータを別シートに転記する で例えますと、
Sub ichi()

Dim i As Long
Dim k As Long
k = 9
For i = 4 To 13
If Worksheets(“元データ”).Cells(i, 9) > 100 Then
Worksheets(“要注意リスト”).Cells(k, 3) = Worksheets(“元データ”).Cells(i, 1) ‘ID
Worksheets(“要注意リスト”).Cells(k, 4) = Worksheets(“元データ”).Cells(i, 2) ‘名前
Worksheets(“要注意リスト”).Cells(k, 5) = Worksheets(“元データ”).Cells(i, 9) ‘合計
k = k + 1
End If
Next

End Sub
このような状態です。
解けてはいますし、回答を見ても正しいようなのですが、
k = k + 1の位置にいつも戸惑ってしまうのです。

Dim i As Long
Dim k As Long
k = 9
For i = 4 To 13
If Worksheets(“元データ”).Cells(i, 9) > 100 Then
Worksheets(“要注意リスト”).Cells(k, 3) = Worksheets(“元データ”).Cells(i, 1) ‘ID
Worksheets(“要注意リスト”).Cells(k, 4) = Worksheets(“元データ”).Cells(i, 2) ‘名前
Worksheets(“要注意リスト”).Cells(k, 5) = Worksheets(“元データ”).Cells(i, 9) ‘合計
①k = k + 1
End If
     ②k = k + 1
Next

End Sub

①の状態が正しいというのはif endの中に入れておくというルールのような形で覚えてしまっている状態です。
最初に書いた時点では②の位置に書いてしまうのです。
そしてエラーが出て①の位置に戻しています。
ハナコステップで書いているのですが…何度書いても分かりません。

原因と致しましては、以下のように考えているからだと思うのですが、
そもそも文の読み方が正しくないのでしょうか…
ご教示頂けますと幸いです。

Dim i As Long ‘iを宣言します
Dim k As Long ‘kを宣言します
k = 9 ‘kは9です。
For i = 4 To 13 ‘iは4です(1周目時点)
If Worksheets(“元データ”).Cells(i, 9) > 100 Then ‘もしも元データのi4(1周目時点)が100を超えていたら
Worksheets(“要注意リスト”).Cells(k, 3) = Worksheets(“元データ”).Cells(i, 1) ‘IDをコピー
Worksheets(“要注意リスト”).Cells(k, 4) = Worksheets(“元データ”).Cells(i, 2) ‘名前コピー
Worksheets(“要注意リスト”).Cells(k, 5) = Worksheets(“元データ”).Cells(i, 9) ‘合計コピー
End If ‘K9の値に入れるi4が調べ終わりました
     ②k = k + 1 ‘では次(i=5)に進む前にコピー先のセルも動かします
Next ‘(i=5)に進みます(forに戻ります)

End Sub

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

[12928]条件に一致するデータを別シートに転記する

2021-03-10 23:17:20 受講生さんからの投稿です。

動画名の内容に合ってない質問で申し訳ありません。
今まではrange(“a1”).va と書けばvalue がヒントで出ていたんですけど
worksheets(“元データ”).range(”a1″).va と書いてもvalue がヒントが出てきません。

それからこれは元からそうでしたが
マクロを1行書いて上の行にカーソルを移動させたときRange(“a1”).Valueとなり、小文字から大文字に変わるべきところのうち””で挟まれた部分だけ小文字のままです。どうしてなのでしょうか?

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

[12746]条件に一致するデータを別表に転記する。AutoFilterより便利な条件抽出マクロ。

2021-01-03 17:10:05 受講生さんからの投稿です。

とても難しいです。動画4・動画5はマクロコードの構成を暗記する勉強方法で大丈夫でしょうか。正直分解してもすんなり頭に入ってきません。

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

[12741]文字列を加工してデータ転記する(その2)

2021-01-03 05:12:06 ゲストさんからの投稿です。

小川様

お世話になっております。こちらの動画の後半で解説されていた路線駅名の処理について質問がございます。私はこのようにプログラムを書いて処理し、設問で指示された回答は出せたので問題ないと思うのですが、小川さんがこの方法を動画で取り上げなかった理由を教えてもらえないでしょうか?

 If ku = 0 Then
            ku = InStr(roseneki, "ル")
        End If


過去のコメントでは、「「手順書としてどうか?」という問いですね。」という回答が小川さんから出されてました。他の人がプログラムをメンテナンスする時に分かりにくいから、という理解でよろしいでしょうか。ご回答宜しくお願い致します。

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

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

2020-10-13 06:24:43 たかちゃんさんからの投稿です。

発展編1が一通り終了したので、次へ進む前に復習がてら基本編に戻って見ました。最初は、For each と.Offset(c,cyoko)の様な感じで書こうかと思ったのですが、For eachではcやcyokoなどの変数を使ってピンポイントで指定して書くことはできないのだと気付きました。(コレクションのプロパティを指定する時に使うものだから。) 
for構文とOffsetを使って書いてみましたので投稿します。他の方のコメントにあったランキングにも挑戦してみました。
繰り返せば繰り返すほど、新たな学びがあって本当に良い講座です。

Sub rensyu()
    Dim c As Long
    Dim cyoko As Long
    Dim mx As Long
    Dim cMX As Long
    Dim cyokoMX As Long
    
    mx = Range("H1048576").End(xlUp).Row - 6
    With Range("C6")
    cMX = 0
    cyokoMX = 0
    For c = 0 To mx
        For cyoko = 0 To 5
            If .Offset(c, cyoko).Value > .Offset(cMX, cyokoMX).Value Then
                cMX = c
                cyokoMX = cyoko
            End If
        Next
    Next
    Range("K4").Value = .Offset(cMX, -1).Value
    Range("L4").Value = .Offset(-1, cyokoMX).Value
    Range("M4").Value = .Offset(cMX, cyokoMX).Value
    End With
    
End Sub


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

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

2020-09-01 02:03:27 たかちゃんさんからの投稿です。

【感想】
昨日基礎編ベーシックを一度終えたのですが、理解に不安があったので、動画8から2週目を行いました。
問題11、12、16(一瞬悩んだ)、18(2)が、少し悩みながらの回答でしたが、初回のような頭から煙が出そうという状態にはならずに済みました。

昨日の時点では、18(2)は手を動かしても自力回答できる気がしなかったのですが。。。
本日再挑戦して見たところ、悩みつつも手を動かしていたらいつの間にか解けててびっくりしました。( ゚д゚)

こちらの4問は引き続き、時間を置いてから再挑戦しつつ、アドバンスドに進みたいと思います。

昨日は初めて、マクロを書いている夢を見ました。(⌒_⌒;

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

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

2020-08-30 20:16:59 W800CEDさんからの投稿です。

初めて感想を書かせていただきます。

この動画までは、かなり順調にきたのですが、ここで思いっきり躓きました(^_^;)。

同じ条件の「For~Next」と「If~End If」構文で、それぞれの列に異なった加算をするなんて。。。

まるで、左手でマルを書きながら、右手で三角を書かされているような(@_@;)。。。

この項に取り組んで、悩んで、解答を見て納得して、書いてみて、後日また取り組むと前回と同じことを繰り返す・・・みたいなことを何度か繰り返しても理解ができませんでした。

が、本日、同時に違うことを実行するのではなく、個々に考えてみようと思い取り組んだところ、時間も掛かりましたが以下のマクロを自力で書くことができました。

'   【資料番号】のみのマクロ

'    こっちは、比較対象の上下の値が違ったら「変数」の値を「+1」するだけなので問題なし

Sub siryoubangou()

    Dim siryoubangou
    
    Dim gyo
    For gyo = 4 To 19
        If Range("D" & gyo).Value <> Range("D" & gyo - 1).Value Then
            siryoubangou = siryoubangou + 1
        End If
        Range("B" & gyo).Value = siryoubangou
    Next
    
End Sub

'   【資料ごとの番号】のみのマクロ
'
'  こっちは、最初の「1」をどのタイミングで「変数」に代入するか。。。

'   「変数」を「2」「3」と増やすのは、どこのタイミングなのか。。。
'
'   「変数」をどこのタイミングで「0」の状態にリセットすればよいのか。。。

Sub siryousuuryou()

    Dim siryousuuryou
    
    Dim gyo
    For gyo = 4 To 19
        If Range("D" & gyo).Value <> Range("D" & gyo - 1).Value Then
            siryousuuryou = 0
        End If
        Range("C" & gyo).Value = siryousuuryou + 1
        siryousuuryou = siryousuuryou + 1
    Next

End Sub


特に、資料ごとの番号のマクロは、「変数」をあっちこっちに移動したりしながら、実行の結果を見て悩んで、最終的には納得して「ここだ!」てとこに「変数」を書くことが出来たので、なんとなくですが長いトンネルの出口が見えてきたような気がしています。

あっ!「変数(「gyo」以外)」が長いのは、今回に限りです。

コロナウイルスのおかげで休日に家にいることが多くなったのと、以前から興味があったのと懐事情のタイミングが見事に合致したので習い始めたのですが、半世紀生きてからの手習いです。。。老化防止のため、まだまだ先は長そうですが、脳みそフル稼働させてやります(^o^)v。

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

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

2020-08-29 01:09:23 たかちゃんさんからの投稿です。

【感想】
今の所ヒント無しで正解はできるのですが、回答と見比べると余計な動きだったり見づらいプログラムとなってしまいます。

今までは変数をあまり使用しなかった為、変数に纏めることを意識したら、今回は余計な変数を作りすぎていました。(苦笑)

Goukeiという変数を、何故か途中で名前変更している。
kongetsu = goukei

画面左側にある値に、migi という名前の変数をつけている。(苦笑) など。

でも、VBAの勉強初めて1週間で、ここまでかけるようになってとても嬉しいです。講義に何回か出てきた可愛らしいスライド(ハナコのステップ)で一気に理解度が上がりました。

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

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

2020-08-05 09:08:43 ひらさんからの投稿です。

elseif(elseとifをひとつにまとめて記載)と、elseとifを改行して用いる場合、endifの数が違ったりしますか?

先ほど問題を解いたところ、回答エクセルに比べendifの数が1つ少なかったのですが、問題なく動きました。

【自分の書いたマクロ】
Sub gouhi()

Dim gyo
For gyo = 2 To 11

If Range(“C” & gyo).Value = “男性” Then
If Range(“D” & gyo).Value >= 80 Then
Range(“H” & gyo).Value = “合格”
Else
Range(“H” & gyo).Value = “不合格”
End If
ElseIf Range(“D” & gyo).Value >= 70 Then
Range(“H” & gyo).Value = “合格”
Else
Range(“H” & gyo).Value = “不合格”
End If

Next
End Sub

【答えのエクセルのマクロ】
Sub GogakuFugokaku()
Dim gyobangou
For gyobangou = 2 To 11
If Range(“C” & gyobangou).Value = “男性” Then
If Range(“D” & gyobangou).Value >= 80 Then
Range(“H” & gyobangou).Value = “合格”
Else
Range(“H” & gyobangou).Value = “不合格”
End If
Else
If Range(“D” & gyobangou).Value >= 70 Then
Range(“H” & gyobangou).Value = “合格”
Else
Range(“H” & gyobangou).Value = “不合格”
End If
End If
Next
End Sub

elseif(改行せず使用)はあまり使用しない方がよいのでしょうか。
もしすでに過去この件がお話しされていたら申し訳ございませんが、
ご教示いただけますと幸いです。

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

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

2020-06-07 21:59:49 さざなみさんからの投稿です。

質問です。同じシート内のG列にある氏名と同じ氏名をA列から探し、一致した氏名を別シートに転記、B列(郵便番号)、C列(住所)も転記するものを考えています。しかし、1行目しか転記できず、次を検索して同様に転記するマクロがうまくできません。どのように作成したらいいでしょうか?
‘シート2のG列の値がA列と一致した氏名と郵便番号B列・住所C列をシート5へ転記
Sub tenki()
Dim hida
Dim migi
migi = 3
For hida = 2 To 20
If Worksheets(“Sheet2”).Range(“A” & hida).Value = Worksheets(“Sheet2”).Range(“G” & hida).Value Then
Worksheets(“Sheet5”).Range(“B” & migi).Value = Worksheets(“Sheet2”).Range(“A” & hida).Value
Worksheets(“Sheet5”).Range(“C” & migi).Value = Worksheets(“Sheet2”).Range(“B” & hida).Value
Worksheets(“Sheet5”).Range(“D” & migi).Value=Worksheets(“Sheet2”).Range(“C” & hida).Value
migi = migi + 1
End If
Next
End Sub

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

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

2020-06-01 16:08:52 受講生さんからの投稿です。

お世話になっております。
変数が重なると、難しいです。変数の値を設定する行を間違えてばかりです。

疑問に思った点があるので、質問をします。
「gyo=6 To 33」と指定しているのに、中断モードで確認しているときに、最後の「Next」にきて「gyo」にカーソルを合わせると、「gyo=34」となります。
指定している33以上は、いかないかと思ったのですが、実際は、34まで進んでいます。
gyoの値を指定しているのに不思議です。

上手く説明できず申し訳ございません。
どうぞよろしくお願いいたします。

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

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

2020-05-23 10:49:27 受講生さんからの投稿です。

お世話になっております。
動画を見る前に、まず自分でやってみて、答え合わせに動画を見ています。
問題[1]は、出来たのですが、問題[2]でif文を重ねることが思いつかず、下記コードになりました。(>と>=も間違っています)
何度「構文エラー」が出て、修正してやっと出来た!と思い動かしてみたところ、すべて”不合格”となってしまいました。
ギブアップして、動画を見てif文を重ねるのだと納得しました。

時間がかかりますが、何度も演習問題を解くことが、自分の力になると信じて頑張ります。

今後もどうぞよろしくお願いいたします。



Sub gouhi()
Dim gyo
For gyo = 2 To 11
If Range(“C” & gyo).Value = “男性” & Range(“D” & gyo).Value > 80 Then
Range(“H” & gyo).Value = “合格”
ElseIf Range(“C” & gyo).Value = “女性” & Range(“D” & gyo).Value > 70 Then
Range(“H” & gyo).Value = “合格”
Else
Range(“H” & gyo).Value = “不合格”
End If
Next



End Sub

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

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

2020-05-19 23:02:17 受講生さんからの投稿です。

いつもお世話になっております。この問題はできたのですが、多少自分のコードは無駄が多いですね汗。

「ElseIf Range(“E” & gyo).Value = “平成” Then」ここはelse使えば、よかったんですね。

あと質問なんですが、”昭和”の箇所はRange(“E2”).Valueにも置き換えられると思うのですが、直接文字列を入力したほうが動作的には軽くなるのでしょうか?

Sub shouwheisei()
    Dim gyo
    For gyo = 2 To 11
        If Range("E" & gyo).Value = "昭和" Then
            Range("G" & gyo).Value = Range("F" & gyo).Value + 25 + 1900
        ElseIf Range("E" & gyo).Value = "平成" Then
            Range("G" & gyo).Value = Range("F" & gyo).Value - 12 + 2000
        End If
    Next
End Sub

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

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

2020-05-17 18:17:47 受講生さんからの投稿です。

小川さんいつもお世話になっております。

下記のようなコードでもsheet2の解答と同じ結果になりました。解説をみましたが、本当に色々パターンありますね。

Sub hyou()
Dim gyo
Dim gyoshya
Dim furigana

    For gyo = 2 To 27
        If InStr(gyoshya, Range("A" & gyo).Value) > 0 Then
        
        Else
            gyoshya = gyoshya & "," & Range("A" & gyo).Value
            furigana = furigana & "," & Range("B" & gyo).Value
        End If
        Range("F2").Value = Mid(gyoshya, 2)
        Range("F3").Value = Mid(furigana, 2)
        
    Next   
End Sub

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

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

2020-05-17 17:52:19 受講生さんからの投稿です。

お疲れ様です。

小川さんのコードはシンプルで読みやすいです。私が書いたコードだとだいぶ無駄がありますね。汗 

下記がコードです。

Sub banngou()
Dim siryou
Dim gyo

    For gyo = 4 To 19
        siryou = Range("C" & gyo).Value

    If InStr(siryou, "A") > 0 Then
        Range("B" & gyo).Value = Replace(Mid(siryou, 3), "A", 1)
    
    ElseIf InStr(siryou, "B") > 0 Then
        Range("B" & gyo).Value = Replace(Mid(siryou, 3), "B", 2)
    
    ElseIf InStr(siryou, "C") > 0 Then
        Range("B" & gyo).Value = Replace(Mid(siryou, 3), "C", 3)
        
    End If

    Next
End Sub


このコードでやってしまうと、仮にA~Zまでを求める場合、パターンが増えるので大変だなぁと思いました。もう少し効率よく書きたいもんです。

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

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

2020-05-12 10:10:46 Kenさんからの投稿です。

以下のようなプログラムを作ってみたところうまく動きませんでした。
調べてみたところ
motogyo = kai * 3 – 2​ ’★

kai=1
なのに
motogyo=-2
になっています。
これは何故なのでしょうか?

——————————————–
Sub kaitou1()
Dim kai​
Dim motogyo​
Dim listgyo​
motogyo = kai * 3 – 2​ ’★
listgyo = 1​
For kai = 1 To 10​
Range(“C” & listgyo).Value = Range(“A” & motogyo).Value & Range(“A” & motogyo).Value​
listgyo = listgyo + 1​
Next​
End Sub

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

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

2020-05-06 08:57:19 ゲストさんからの投稿です。

こんにちは。こんな時期なので、仕事にVBAすごく活用して評価されてます。ありがとうございます。

動画と同じような型の転記処理をしているのですが、
転記元は動画と同じ行数程あり、
転記先は10行の表が横にいくつも並んでる状態です。
10行目を終えるとまたすぐ隣の列の1行目から始めたいのですが、どのようにかけばうまくいくでしょうか?
ご教授頂くと幸いです。



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

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

2020-04-23 16:28:48 受講生さんからの投稿です。

プログラムの印刷を行う場合に、左端一ぱいのところから印刷されて、大変見にくし、ファイルリングに穴をあけると、左端が見えなくなります。
このため、エディタの書式タブで、左右の間隔や上限の間隔を調整しようとしても、入力できません。プログラムは書式の設定ができないのでしょうか。

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

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

2020-04-21 16:41:58 nobashiさんからの投稿です。

VBAのプログラミングは自分でも解説を聞く前に解答できました。操作の件で教えてほしいのですが、HOME+Shift+↓↓↓+Ctr+Xできりとり、貼り付けする場所で、TABを操作し、Ctr+Vで張り付けると、一番上の行だけしか、TABが効きません。他の行はタブが効かないのですが。。。(他の問題でも同じです。どこがいけないのでしょうか。

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

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

2020-04-19 18:49:22 受講生さんからの投稿です。

vlookup関数を使わずにVBAで書くとこのようなことになることは理解できます。このVBAで書くと、一つずつ、はじめから検索することになると思いますが、検索したいデータが膨大(例えば1万件)になるとかなり時間がかかることになると思います。発展編を受講すれば、別のプログラムを使ってもっと速度を上げるような方法を学ぶことができますか。

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

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

2020-02-21 17:01:41 受講生さんからの投稿です。

条件分岐構文(If_ Then_Elseif_ End if とFor_ Nextの組み合わせ)で1点質問です。
早速実務でも使ってみました。
在庫回転率(売上原価÷期末在庫)
3以上=”A”
2以上=”B”
1以上=”C”
1未満=”D”
#DIV/0!=”在庫ゼロ”
と表示させたいと思いました。
数値になっている部分は、条件分岐しても問題なく動くのですが、
#DIV/0!は「実行値エラー”13″ 型が一致しません」の通知がきて、
動きがそこで止まってしまいます。
(#DIV/0!は” ”で囲っています。囲わない場合赤字になりました。)
エラー値の場合、何か特別の処理をしなくてはならないのでしょうか?
(急ぎではないので、以降の講座で出てくるのであれば、その際に学習します。)

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

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

2019-08-17 19:07:53 田中 宏明さんからの投稿です。

ショートカットキーによるやり直し
 Alt→E→R
無意識に使えるよう練習します。

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

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

2019-07-27 17:11:23 ほとさんからの投稿です。

フォローアップアドバンスドでつっかかったので、ベーシックが本当にすらすらできるか不安になり、再復習しました。
結果、3度復習したことになりましたが、マクロが思ったような動きにならない場合でも慌てずに修正できるようになり、ベーシックレベルの変数の考え方・使い方は完全に整理できたと思います。最初のころを考えると信じられません。
また3度目の復習ではなんとかベーシックのマクロを2時間程度で組めるようになりました。再度、アドバンスドにチャレンジします。

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

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

2019-07-07 14:26:00 ほとさんからの投稿です。

小川先生

こんにちわ
先生の講義はわかりやくすてすらすら頭に入ってきます。
この調子で進めていきたいと思います。

[2]の回答を復習したとき、最後のfor next構文でお団子のとる範囲を間違えて最後の行を取りこぼしてしまいました。
間違いだということはすぐ理解できたのですが、
その時のマクロの実行結果が私の推測と違っていたので、質問させていただきました。私の推測では、F6に6が表示されると思ったのですが、実際はF7に表示されました。理由をお教えいただけますでしょうか。

復習で書いたマクロは以下のものとなります。
Sub countif_3()
Dim goukei

Dim gyo2
For gyo2 = 4 To 6
goukei = 0
Dim gyo
For gyo = 4 To 18
If Range(“c” & gyo).Value = Range(“e” & gyo2).Value Then
goukei = goukei + 1
End If
Next


Next
Range(“f” & gyo2) = goukei

End Sub

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

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

2019-06-18 22:45:03 矢口幸平さんからの投稿です。

こんにちは。いつもお世話になっております。
ベーシックを終了してアドバンスドに移行予定でしたが
業務が繁忙であるため、6月末まではベーシックの復習中です。

本題にうつり、質問致します。

【質問】問題2について
下記コードを記入しても、合否結果が出力されません。
gouhi の変数に変換した途端出力されなくなりました。
そのため、この変数設定の仕方が良くないと推測されますが
何が悪いのかわからず、堂々巡りとなっております。

ご回答頂けると嬉しいです。
宜しくお願い致します。

ーーーーーーーーーーーーーー以下コードーーーーーーーーーーーー

Sub danzyo()
    Dim sei
    Dim tensu
    Dim gouhi
    
    Dim gyo
    For gyo = 2 To 11
        sei = Range("c" & gyo).Value
        tensu = Range("d" & gyo).Value
        gouhi = Range("h" & gyo).Value
        
        If sei = "女性" Then
            If tensu >= 70 Then
                gouhi = "合格"
            Else
                gouhi = "不合格"
            End If
        Else
            If tensu >= 80 Then
                gouhi = "合格"
            Else
                gouhi = "不合格"
            End If
        End If
    Next
End Sub

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

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

2019-05-10 05:52:12 受講生さんからの投稿です。

小川先生、
お世話になっております。カンマの使い方で1つ確認させてください。解説を見る前に自分で解いた時に、カンマを表示する時にコードとしてRange(“F2”).Value = Range(“A2” & “,”).Value としたのですが、実行時エラー1004となり、動きませんでした。
Range(“F2”).Value = Range(“A2”).Value & “,”としたら可動しました。別の会の授業の中でのコロンを使用したRange(“C2” & “:” & “E2”).Value = 8のコードを参考に上記のようなコードとしたのですが、エラーがでました。確認したいのですが、これはどこがエラーの原因なのでしょうか。よろしくお願いいたします。  

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

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

2019-05-05 10:01:47 藤村英夫さんからの投稿です。

一回目に見たときに感動したのですが、土日だけ復習しているとすぐに忘れてしますので、思い切ってスマホを大型に買い替えて、ゴールデンウィーク明けからは、電車のなかでこの動画を通勤中に見るようにします。

ところで、質問ですが、ドットバリュー(.value)は入力しなくても、
今のところ支障なく作動するようですが、この先 発展編にすすむとまずいことはでてきますか? 書店で購入した本が、range(“A1”).value等の
入力の場合、ドットバリュー(.value)は打たなくても問題がないという記述があったので、今まで入力していません。

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

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

2019-04-11 14:45:18 受講生さんからの投稿です。

お世話になります。ご無沙汰しております。
For Nextステートメントについて質問があるのですが、For NextステートメントはRange(“A” & i )のように書いてはいけないと今日言われました。
Cells( 1 , i ) のように書きなさいと。
理由としてはRangeでかくと
① 処理が遅い
② そんなコードを書いていると笑われる
との事です。

私は小川先生の講座で1年以上VBAについて勉強してきましたのでこの書き方に違和感はありませんでした。
ちなみにCellsの書き方も知っています。
そこで、小川先生がこの書き方でやってきているのは初心者に理解しやすいようにですか?上級者向けの講座ではCellsを使っているのでしょうか?
Rangeの書き方でも行の処理ならできるので良いかなと思っていたのですが今日、思いっきりその書き方はダメだよと言われました。
と、言うのも現在、東京都が行っている職業訓練というものでExcel VBA実践コースというのを受講しています。
2月から3ヶ月間のコースでまもなく終わりを迎えます。
その講師の先生から言われました。
その先生の教え方はものすごくわかりにくく、受講者のほとんどが授業を聞かずに自分たちでテキストを読み込んだり、ネットで調べながら勉強していたほどお世辞にも優秀な講師とは言えないです。
どこがダメか具体的に教えて欲しいといっても処理速度が遅いのと田中先生(Office田中)が言っていたからとしか説明してもらえませんでした。
私の中では信頼の置けない講師の方なので腑に落ちなくて・・・。
小川先生に直接質問させて頂きました。
今後もっと複雑なコードを書くようになったらRangeでの書き方はしなくなっていくのでしょうか?
ご教授、お願いいたします。

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


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

 

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

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

トップへ