いつもお世話になっております
下記のコードで一つおしえてくれませんでしょうか
下記のようにシート1 シート2があります。
名前 性別 血液型 生年月日
長田 聡美 女 A 2021/4/13
渋谷 角太郎 男 A 2021/4/14
野口 織枝 女 B 2021/5/5
神谷 俊康 男 O 2021/6/6
宮田 房実 女 A 2021/4/17
奥村 里香 女 O 2021/4/18
白川 照也 男 A 2021/4/19
福岡 亜里香 女 B 2021/4/20
下記のコードに
条件を付けたら
If .Cells(i, "D").Value = "男" Then
答えがあっていませんでした。
わかる方おしえてくれませんでしょうか
Sub sample()
Dim T(1 To 12), v, m
Dim shtNo As Long
Dim i As Long, N As Long
Const shtName = "集計"
For shtNo = 1 To 2
With Worksheets(shtNo)
If .Name <> shtName Then
N = Application.Max(.Cells(Rows.Count, 6).End(xlUp).Row - 2, 1)
v = .Cells(3, 6).Resize(N).Value
For i = 1 To N
If .Cells(i, "D").Value = "男" Then
m = v(i, 1)
End If
If IsDate(m) Then T(Month(m)) = T(Month(m)) + 1
Next i
End If
End With
Next shtNo
Worksheets(shtName).Range("C3:N3").Value = T
End Sub
No.5ベストアンサー
- 回答日時:
No.2の者です。
取り敢えず、何でも良いとの事で、私が作り易い様に作成してみました。
下記でどうでしょうか?
Option Explicit
Sub sample()
Dim T(1 To 12) As Long, myAllDat As Variant
Dim I As Long, shtNo As Long
Const shtName = "集計"
For shtNo = 1 To 2
Worksheets(shtNo).Select
myAllDat = Range("C2").CurrentRegion.Value
For I = 2 To UBound(myAllDat)
If myAllDat(I, 2) = "男" Then
T(Month(myAllDat(I, 4))) = T(Month(myAllDat(I, 4))) + 1
End If
Next I
Erase myAllDat
Next shtNo
Worksheets(shtName).Select
For I = 1 To 12
Cells(2, I + 2).Value = I & "月"
Cells(3, I + 2).Value = T(I)
Next I
End Sub
いろいろ 失礼いたしました。
うまくいきました。
Range("C2").CurrentRegion.offset(1).Value
にしないとなぜか+1になりましたので
本当すみませんです。
No.4
- 回答日時:
こんばんは
以前にも書きましたが、ダメなコードを示す前に、まず、
・「なさりたいこと」をきちんと説明すること
・シートのレイアウトが(セル位置が)わかるようにすること
をきちんと示さないと、読む人には何もわからないと思われます。
さて、本題ですが、
「男性だけをカウントの対象にしたい」ということでしょうか?
であるなら、文言通りに、「男性の場合だけカウントする」ようにすれば良いでしょう。
カウントしているのは、
>If IsDate(m) Then T(Month(m)) = T(Month(m)) + 1
の部分です。
ご提示のコードでは、
・チェックしている値が、処理しようとしている値とはデータがずれている
・男性以外(=女性)の場合は異なった日付を用いてカウントしている
という2点が合わさっておかしなことになっています。
(両方を修正しないと求める結果は得られないでしょう)
セル値を参照する方式にするなら、全てをセル値を参照するようにした方がわかりやすいですし、配列を参照するなら配列を参照するように統一した方が間違えは少ないと思われます。
意味が分からない場合は、セルの値を参照する方式に統一したほうが宜しいと思います。
元の処理方法が、一度配列に読んでから処理を行っているのは、(メモリは使いますが)処理速度向上のためだけですから。
No.2
- 回答日時:
こんばんは。
最初に、失礼かもしれませんが、プログラムの書き方が、あまり見ない
様なかなり独特の感じの書き方に見えます。
どの様な処理をするプログラムなのでしょうか?
暫く見ていて、何となくですが、男性で、生年月日の月毎に、人数を集計
されたいという事でしょうか?
>やはり数があわないですね
→どの変数で、本来欲しい結果、今出力されている結果を教えて貰えない
でしょうか?
シートの構成は、
性別がD列、生年月日がF列になるのでしょうか?
No.1
- 回答日時:
i はシートの行番号:3行目を 1 としているはずです。
なので
.Cells(i + 2, "D").Value = "男"
とか配列のインデックスとシートの行番号を一致させる補正が必要かと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
【エクセル】オプションボタン...
-
実行時エラー1004「Select メソ...
-
特定の文字を含むシートだけマ...
-
VBAで指定シート以外の選択
-
シートが保護されている状態で...
-
ExcelのVBAのマクロで他のシー...
-
【VBA】シート名に特定文字が入...
-
【Excel VBA】Worksheets().Act...
-
エクセルのマクロでアクティブ...
-
【VBA】指定した検索条件に一致...
-
【ExcelVBA】全シートのセルの...
-
XL:BeforeDoubleClickが動かない
-
Excel チェックボックスにチェ...
-
別のシートを参照して計算する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ExcelVBA シート名を複数セルか...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報
やはり数があわないですね
シートの構成は添付ファイルのようになります。
シート名 4月 5月
左が4月 右が5月
5月のなかに4月と6月もあります。
4月
名前 性別 血液型 生年月日
長田 聡美 女 A 2021/4/13
野口 織枝 女 B 2021/4/15
宮田 房実 女 A 2021/4/17
奥村 里香 女 O 2021/4/18
福岡 亜里香 女 B 2021/4/20
渋谷 角太郎 男 A 2021/4/14
神谷 俊康 男 O 2021/4/16
白川 照也 男 A 2021/4/19
5月
名前 性別 血液型 生年月日
長田 聡美 女 A 2021/4/13
野口 織枝 女 B 2021/5/5
宮田 房実 女 A 2021/4/17
奥村 里香 女 O 2021/4/18
福岡 亜里香 女 B 2021/4/20
渋谷 角太郎 男 A 2021/6/5
神谷 俊康 男 O 2021/6/6
白川 照也 男 A 2021/4/19
実行すると
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
9 2
結果は添付しました。
文字でやるとずれますので
よろしくお願いいたします。
言い方に語弊があるかもしれませんが
でればなんでもよいです。
おしえてくれませんでしょうか