いつもお世話になっております。
添付ファイルのように
B列 C列 D列 E列 F列
No 名前 性別 血液型 生年月日
とあります。
男性だけを取り出して、
一気に吐き出そうとおもいましたが、
なぜか
女のところだけ空白になります。
(空白にならず、詰めたいのですが)
sortかける手もありますが、
一度でいかないものなのでしょうか
わかる方おしえてくれませんでしょうか
Sub a()
Dim i As Long
Dim j As Long
Dim cnt As Long
Dim myD As Variant
Dim myD2 As Variant
With Range("B2")
myD = .CurrentRegion.Value
.CurrentRegion.ClearContents
End With
ReDim myD2(1 To UBound(myD, 1), 1 To UBound(myD, 2))
cnt = 1
For i = 1 To UBound(myD, 1)
For j = 1 To UBound(myD, 2)
If myD(i, 3) = "男" Then
myD2(i, j) = myD(i, j)
End If
Next j
Next i
With Range("B2")
.Resize(UBound(myD, 1), UBound(myD, 2)) = myD2
End With
End Sub
No.2
- 回答日時:
ちょっと強引ですが、以下のようにしてください。
Sub a()
Dim i As Long
Dim j As Long
Dim i2 As Long
Dim flag As Boolean
Dim cnt As Long
Dim myD As Variant
Dim myD2 As Variant
With Range("B2")
myD = .CurrentRegion.Value
.CurrentRegion.ClearContents
End With
ReDim myD2(1 To UBound(myD, 1), 1 To UBound(myD, 2))
cnt = 1
i2 = 0
For i = 1 To UBound(myD, 1)
flag = False
If myD(i, 3) = "男" Or i2 = 0 Then
flag = True
i2 = i2 + 1
End If
For j = 1 To UBound(myD, 2)
If flag = True Then
myD2(i2, j) = myD(i, j)
End If
Next j
Next i
With Range("B2")
.Resize(UBound(myD, 1), UBound(myD, 2)) = myD2
End With
End Sub
No.3
- 回答日時:
間違いの訂正については出てますが、今のコードをそのままで
空白行を削除する②
http://doctor.ataglance.jp/mini-macro6/
なんてのも以前質問時に回答頂いてませんでしたっけ?
No.4
- 回答日時:
No.5ベストアンサー
- 回答日時:
#1です
よく見るとcnt = 1は使っていないですね。
使い忘れ?
あと、配列を出力するサイズは、出力する配列サイズで.Resizeするべきですね。多分この場合、
同時にRedimもあらかじめサイズを取得できるのなら
した方が良いと思います。
少しだけ書き直しおてみましたが、結果は分かりません。
Sub a()
Dim i As Long
Dim j As Long
Dim cnt As Long
Dim myD As Variant
Dim myD2 As Variant
With Range("B2")
myD = .CurrentRegion.Value
ReDim myD2(1 To WorksheetFunction.CountIf(Range("D3", Cells(Rows.Count, "D").End(xlUp)), "男"), 1 To UBound(myD, 2))
.CurrentRegion.ClearContents
End With
cnt = 1
For i = 1 To UBound(myD, 1)
If myD(i, 3) = "男" Then
For j = 1 To UBound(myD, 2)
myD2(cnt, j) = myD(i, j)
Next j
cnt = cnt + 1
End If
Next i
With Range("B2")
.Resize(UBound(myD2, 1), UBound(myD2, 2)) = myD2
End With
End Sub
いつもお世話になっております。
ReDim myD2(1 To WorksheetFunction.CountIf(Range("D3", Cells(Rows.Count, "D").End(xlUp)), "男"), 1 To UBound(myD, 2))
.CurrentRegion.ClearContents
End With
こんな 書き方初めてみました。
いろいろありますね
For i = 1 To UBound(myD, 1)
If myD(i, 3) = "男" Then ここに書くんですね
For j = 1 To UBound(myD, 2)
myD2(cnt, j) = myD(i, j)
Next j
cnt = cnt + 1
End If
Next i
ありがとうございました。
No.7
- 回答日時:
こんにちは
別の方法でも良ければ・・・
ご参考までに。
(B列で最終行の判断をしています)
Sub Q12715319()
Dim v As Variant
Dim i As Long
i = Cells(Rows.Count, 2).End(xlUp).Row - 2
If i < 1 Then Exit Sub
With Cells(3, 4).Resize(i)
v = .Value
For i = 1 To UBound(v)
If v(i, 1) <> "男" Then v(i, 1) = ""
Next i
.Value = v
If WorksheetFunction.CountBlank(.Offset(0)) Then _
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub
ありがとうございました。
If WorksheetFunction.CountBlank(.Offset(0)) Then _
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Withの部分参考にいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) このマクロの説明文を教えてほしいです。 1 2023/01/12 09:17
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 抽出結果を別シートに貼り付ける 2 2022/07/09 22:59
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
文字列の結合を空白行まで実行
-
vba 2つの条件が一致したら...
-
VBAを使って検索したセルをコピ...
-
データグリッドビューの一番最...
-
URLのリンク切れをマクロを使っ...
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
B列の最終行までA列をオート...
-
エクセル 2つの表の並べ替え
-
DataGridViewに空白がある場合...
-
Cellsのかっこの中はどっちが行...
-
VBAで、離れた複数の列に対して...
-
VBAのFind関数で結合セルを検索...
-
マクロ 最終列をコピーして最終...
-
期限を超えた日付に警告のメッ...
-
vbaでシートより100より大きい...
-
VBA初心者です 検索した数字の...
-
Changeイベントでの複数セルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報
このように結果したいのを
添付しました。