Excel VBA 質問スレッド №1070 (未解決)

1行のデータから2行以上のデータを作成する方法

投稿者 : MKKK     投稿日時 : 2022/10/27(Thu) 10:58:52     OS : Windows 10     EXCEL : Office 365
初めてこちらを利用します。
システム間で連携されていないデータをコンバートするためのマクロを作成しようとしています。

1行のデータから部分的に抽出して複数のシートに該当箇所を転記したいです。
ですが、コンバートする先では2行以上で表現する必要があり、私のエクセル知識では対応できなかったのでお知恵を貸していただければ幸いです。
マクロを使わずに関数で行う方が簡単であればその点もご教示いただけますと嬉しいです。


例======

元データ
A1 顧客コード B1 顧客名 C1 売掛金残高 D1 手形残高 E1 請求書送付 F1 電子請求
A2  000001  B2 あ社  C2 50,000   D2 30,000  E2 要     F2 不要
A3  000002  B3 い社  C3 10,000   D3 〔空欄〕 E3 不要    F3 要


転記データ
A1 顧客コード B1 顧客名 C1 売掛金残高 D1 手形残高 E1 請求書送付 F1 電子請求
A2  000001  B2 あ社  C2 50,000   D2 〔空欄〕 E2 要     F2 〔空欄〕
A3  000001  B3 あ社  C3 〔空欄〕  D3 30,000  E3 要     F3 〔空欄〕
A4  000002  B4 い社  C4 10,000   D4 〔空欄〕 E4 〔空欄〕  F3 要

======

元データあ社のように、C列・D列両方に記載がある場合は2行で表現したいという条件付けをするために、
有効なコードなどはありますでしょうか?

ご教示くださいましたら幸いです。

スポンサーリンク
[返信 1] Re : 1行のデータから2行以上のデータを作成する方法
投稿者 : 疑問     投稿日時 : 2022/10/27(Thu) 11:54:43
元データ2行目がどういう条件で転記データ2,3行目に分かれるのかを明記しなければ
答えられる人も答えられないと思います。

[返信 2] Re : 1行のデータから2行以上のデータを作成する方法
投稿者 : MKKK     投稿日時 : 2022/10/27(Thu) 12:41:30
■[返信 1] 疑問さん(2022-10-27 11:54:43)の記事
> 元データ2行目がどういう条件で転記データ2,3行目に分かれるのかを明記しなければ
> 答えられる人も答えられないと思います。


例の下にある記載では不十分でしょうか?
「元データあ社のように、C列・D列両方に記載がある場合は2行で表現したいという条件付けをするために…」

[返信 3] Re : 1行のデータから2行以上のデータを作成する方法
投稿者 : さんこう     投稿日時 : 2022/10/27(Thu) 12:51:06
>1行のデータから部分的に抽出して複数のシートに
意味不明です。


>C列・D列両方に記載がある場合は2行で表現したい

参考になれば(同じシートのI~N列に転記しています)。

Sub Test()
    Range("I1:N1").Value = Range("A1:F1").Value
    i = 2
    For r = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        Range("I" & i & ":N" & i).Value = Range("A" & r & ":F" & r).Value
        If Cells(r, "C") <> "" And Cells(r, "D") <> "" Then
            Range("I" & i + 1 & ":N" & i + 1).Value = Range("I" & i & ":N" & i).Value
            i = i + 1
        End If
        i = i + 1
    Next
End Sub

[返信 4] Re : 1行のデータから2行以上のデータを作成する方法
投稿者 : MKKK     投稿日時 : 2022/10/27(Thu) 13:27:37
さっそくのご返信ありがとうございます。

> >1行のデータから部分的に抽出して複数のシートに
> 意味不明です。

失礼しました。
例はあくまで一部分ですので分かりづらいのですが、200列ほどあるデータから必要な個所を部分的に抽出して、
約20列×5シートに転記する予定です。
すなわち、行そのものをコピーするというわけではないと言うことを表現したかった次第です。


> >C列・D列両方に記載がある場合は2行で表現したい

> 参考になれば(同じシートのI~N列に転記しています)。

作成していただいたものですと、C/D列両方に記載がある場合に行がそのままコピーされている形になるかと思います。
(例では〔空欄〕のところに値が入った状態)
そうではなく、C列の値のみが入った行と、D列の値のみが入った行がある形に転記したいので1行を複数の行に分割したいといったイメージでしょうか…

[返信 5] Re : 1行のデータから2行以上のデータを作成する方法
投稿者 : さんこう     投稿日時 : 2022/10/27(Thu) 13:47:19
>そうではなく、C列の値のみが入った行と、D列の値のみが入った行がある形に転記したいので1行を複数の行に分割したいといったイメージでしょうか…

それは承知しております。
「C列・D列両方に記載がある場合は2行で表現したいという条件付けをするために、有効なコード」を提示したつもりです。
なので「参考になれば。」と申しております。

あとは、下記を行うコードを追加すればいいでしょう。
・転記した1行目のD列を消す
・転記した2行目のC列を消す
・「不要」の文字を消す

[返信 6] Re : 1行のデータから2行以上のデータを作成する方法
投稿者 : ngk     投稿日時 : 2022/10/27(Thu) 15:30:20
なるほど分割する条件はD列に入力があるか否かですか。

であれば、

1.元データの最終行を取得する
2.転記データの行を変数で入力する。
3.A列・B列・C列・E列を転記、F列が"要"なら転記する。転記データの行変数を増やす。
4.D列が空白以外ならA列・B列・D列・E列を転記、F列が"要"なら転記する。転記データの行変数を増やす。
5.3~4をForNextで2行目から元データの最終行まで繰り返す。

で出来ますね。
構文は自分で調べましょう。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2026-04-02 06:46:06 )
タイトルとURLをコピーしました