質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1881閲覧

フラグを立てたデータを上から詰めて転記する方法

tiyo

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/06/19 11:33

前提・実現したいこと

上半分がフラグを1とたてたコードで下半分がフラグを立てたものをを転記するコードです。
このままでは、下記の表のように不合格者名が空白をそのまま残して転記されてしまうため、上から詰めて転記する方法が知りたいです。よろしくお願いします。 

イメージ説明

ソースコード
Dim a As Range                
Set a = Range("D2:D7")
Dim b As Range
Set b = Range("E2:E7")
Dim i As Integer

For i = 1 To a.Cells.Count
If a.Cells(i).Value <= 70 Then
b.Cells(i).Value = "1"
Else
b.Cells(i).Value = "0"
End If
Next i

Dim name As Range
Set name = Range("A2:A7")
Dim namei As Range
Set namei = Range("F2:f7")
Dim k As Integer

For k = 1 To b.Cells.Count
If b.Cells(k) = "1" Then
namei.Cells(k) = name.Cells(k)
End If
Next k

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コードにできるだけ手を加えないとすれば別変数用意するのが一番楽かな?

VBA

1Dim row as Integer 2row = 1 3 4namei.ClearContents 5For k = 1 To b.Cells.Count 6 If b.Cells(k) = "1" Then 7 namei.Cells(row) = name.Cells(k) 8 row = row + 1 9 End If 10Next k

投稿2021/06/19 12:34

編集2021/06/19 14:56
neconekocat

総合スコア443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiyo

2021/06/19 14:47

ご回答ありがとうございます。 実際にコードを実行してみたところ、鈴木、井上、斎藤と上から詰めてコードが入力されたのですが、下に一セル開けて井上、斎藤と入力されてしまいました。やはり一からコードに手を加えないと難しいでしょうか。 何度も申し訳ありませんがよろしくお願いいたします。
neconekocat

2021/06/19 14:57 編集

コードを実行する前にF列は全部消した状態で行っていますか? 一応、転記先を一旦クリアする処理を追加しました。
tiyo

2021/06/20 02:16

上手くいきました。助かりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問