Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


908 / 13644 ツリー ←次へ | 前へ→

【77598】膨大な件数を区分けしたいです あぶ 15/11/3(火) 21:26 質問[未読]
【77599】Re:膨大な件数を区分けしたいです β 15/11/3(火) 21:53 発言[未読]
【77600】Re:膨大な件数を区分けしたいです あぶ 15/11/3(火) 22:07 質問[未読]
【77601】Re:膨大な件数を区分けしたいです β 15/11/3(火) 22:12 発言[未読]
【77603】Re:膨大な件数を区分けしたいです あぶ 15/11/3(火) 22:25 質問[未読]
【77605】Re:膨大な件数を区分けしたいです β 15/11/3(火) 22:31 発言[未読]
【77607】Re:膨大な件数を区分けしたいです あぶ 15/11/3(火) 22:35 発言[未読]
【77609】Re:膨大な件数を区分けしたいです マナ 15/11/3(火) 22:57 発言[未読]
【77602】Re:膨大な件数を区分けしたいです β 15/11/3(火) 22:24 発言[未読]
【77604】Re:膨大な件数を区分けしたいです あぶ 15/11/3(火) 22:27 発言[未読]
【77606】Re:膨大な件数を区分けしたいです β 15/11/3(火) 22:34 発言[未読]
【77608】Re:膨大な件数を区分けしたいです あぶ 15/11/3(火) 22:36 お礼[未読]

【77598】膨大な件数を区分けしたいです
質問  あぶ  - 15/11/3(火) 21:26 -

引用なし
パスワード
   膨大な時間と数値の情報で、13行目に通話時間、14行目に通話結果(通話、不応答、話中)というデータがあります。
1分以上通話した数、1分以内の数を出したいので、下記のプログラムを作りましたが、期待する数値が出てきません。どこかおかしいかわかりません。
つたない説明で申し訳ないですが、教えてください。

Private Sub CommandButton3_Click()

Dim VarGyou As Variant
Dim StrTime As String
Dim VarCount_On As Variant
Dim VarCount_Off As Variant
VarCount_On = 0
VarCount_Off = 0
VarGyou = 1
  Do
    VarGyou = VarGyou + 1
    If Cells(VarGyou, 13) = "" Then
      Exit Do
    End If
    If Cells(VarGyou, 14) = 1 Then
      StrTime = Cells(VarGyou, 13)
       If StrTime >= "00:01:00" Then
        VarCount_On = VarCount_On + 1
      Else
        VarCount_Off = VarCount_Off + 1
      End If
    End If
  Loop
  Cells(3, 47) = VarCount_On
  Cells(4, 47) = VarCount_Off
End Sub

【77599】Re:膨大な件数を区分けしたいです
発言  β  - 15/11/3(火) 21:53 -

引用なし
パスワード
   ▼あぶ さん:

まず、エクセルでは、横方向に伸びるセル群、これを【行】と呼びます。
この行が縦に何行もあるわけですね。
で、縦方向に伸びるセル群を【列】と呼びます。
この列が横に何列もあって、A列、B列、C列 あるいは 1列目、2列目、3列目 と呼びます。

「13行目に」ではなく「13列目に」ですね。もっとわかりやすく、「M列に」と書いてもらったほうがいいでしょうね。

さて、そのM列の時間ですが、ここは文字列で記入されているのですか?
それとも、時間という数値(いわゆる日付型)ですか?

Dim StrTime As String を Dim StrTime As Date
If StrTime >= "00:01:00" Then を If StrTime >= TimeSerial(0,1,0) Then
にすると、どうなりますか。

それと、テーマとは離れますが、

Cells(VarGyou, 13) これは Cells(VarGyou, "M") と記述できますし、そのほうがわかりやすいかもしれません。

少なくとも、Cells(3, 47) これは、Cells(3, "AU") のほうがわかりやすいですし、
さらにいえば Range("AU3") が、そのものずばりで、コードを見た人が悩まなくても済むと思いますが。

【77600】Re:膨大な件数を区分けしたいです
質問  あぶ  - 15/11/3(火) 22:07 -

引用なし
パスワード
   不勉強ですみません。色々アドバイスありがとうございます。
さて、結果ですが、私が作ったものと同じ結果になってしまいました。
これであってるのか?と思いたくなるくらいです。

【77601】Re:膨大な件数を区分けしたいです
発言  β  - 15/11/3(火) 22:12 -

引用なし
パスワード
   ▼あぶ さん:
>さて、結果ですが、私が作ったものと同じ結果になってしまいました。
>これであってるのか?と思いたくなるくらいです。

つまり、変更しても正しい結果ではなかったということですね。

M列の時刻のデータは、どんな形式なんですか?

【77602】Re:膨大な件数を区分けしたいです
発言  β  - 15/11/3(火) 22:24 -

引用なし
パスワード
   ▼あぶ さん:

当方の検証結果を以下に。

小さなデータをつくりました。
     M列 N列
2行目 0:01:30    1
3行目 0:00:20    1
4行目 0:02:40    1
5行目 0:00:59    1
6行目 0:00:35    1

そちらのコードで実行。 AU3 が 5、AU4 が 0。
私がアップした修正版では AU3 が 2、AU4 が 3 でした。

そちらのM列のデータ型、もしかして文字列なんでしょうか?

【77603】Re:膨大な件数を区分けしたいです
質問  あぶ  - 15/11/3(火) 22:25 -

引用なし
パスワード
   ▼β さん
質問間違っていました。
M列が文字列で"00:00:26"などです。
N列が1〜3までの文字列です。

【77604】Re:膨大な件数を区分けしたいです
発言  あぶ  - 15/11/3(火) 22:27 -

引用なし
パスワード
   M列のデータ、文字列です。

【77605】Re:膨大な件数を区分けしたいです
発言  β  - 15/11/3(火) 22:31 -

引用なし
パスワード
   ▼あぶ さん:

M列を文字列にして実行してみましたが、私の改訂版では
正しく 2 と 3 になります。

N列が文字列というのはどういうことでしょう。
数値ではないということですか?

で、そちらでは、どんな結果になっているんですか?

【77606】Re:膨大な件数を区分けしたいです
発言  β  - 15/11/3(火) 22:34 -

引用なし
パスワード
   ▼あぶ さん:

明日、早朝から2日間ほど外出します。
もしかしたら、当分の間、フォローできないかもしれません。

【77607】Re:膨大な件数を区分けしたいです
発言  あぶ  - 15/11/3(火) 22:35 -

引用なし
パスワード
   ▼β さん:
>▼あぶ さん:
>
>M列を文字列にして実行してみましたが、私の改訂版では
>正しく 2 と 3 になります。
>
>N列が文字列というのはどういうことでしょう。
>数値ではないということですか?
>
>で、そちらでは、どんな結果になっているんですか?

数値なんですけど、業者が全部文字列でデータを作っているのです

【77608】Re:膨大な件数を区分けしたいです
お礼  あぶ  - 15/11/3(火) 22:36 -

引用なし
パスワード
   そうですか、ありがとうございました。

【77609】Re:膨大な件数を区分けしたいです
発言  マナ  - 15/11/3(火) 22:57 -

引用なし
パスワード
   ▼あぶ さん:

念のため確認です
ここも変更しましたか?

>Dim StrTime As String を Dim StrTime As Date

908 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free