[[20240427075715]] 『下の行へ転記』(ハナ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『下の行へ転記』(ハナ)

 シート1  
      A       B       C       D       E    F
 4    1             リンゴ    バナナ        AA
 5    2                バナナ    ミカン               AB
 6    3                ミカン    リンゴ               AC
 7    4                ミカン                         AD
 8    5                バナナ  リンゴ

 シート3
      B         C         D         E         F
 5    1                リンゴ  バナナ              AA
 6    4                ミカン               AD
 7    5                バナナ  リンゴ                
 8    3                ミカン    リンゴ              AC

 シート1のA列の数字選択でシート3のB列5行目から転記したいと思いす。
 B.E列は空欄です。

 ダミーで
 Sub データ転記() 'シート3へ
    Dim Sh1 As Worksheet
    Dim Sh3 As Worksheet

    Set Sh1 = Worksheets("Sheet1")
    Set Sh3 = Worksheets("Sheet3")
   Sh3.Range("A5").Value = Sh1.Range("A4").Value
   Sh3.Range("C5").Value = Sh1.Range("D4").Value
   Sh3.Range("E5").Value = Sh1.Range("F4").Value

 End Sub
 行数が多い場合の方法などの教えてください、
 はじめの一歩です、よろしくお願いいたします。

   

< 使用 Excel:Excel2021、使用 OS:Windows11 >


 >シート1のA列の数字選択
 数字選択とは、どういう事を言っているのですか?

 >ダミーで
 ダミーでとは、どういう意味ですか?
 数字選択には絡んでないような気がしているのですが。。

 >行数が多い
 具体的に何行くらいですか?

(半平太) 2024/04/27(土) 10:20:51


VBAでなくシート関数(XLOOKUP,VLOOKUP等)で出来るかと思いますが、VBAでないとダメなんですか。
(abec) 2024/04/27(土) 10:26:50

 すみません
 セルA4の1,A7の4です。
 シート1に50行位
 ダミーは、覚えはじめなので転記されるか試しました。
 分かる様になったら、絵などの横にマクロボタンを配置し転記したいと考えております、
 まだまだ先ですが。
 うまく説明出来ずすみません。
(ハナ) 2024/04/27(土) 11:34:09

 >セルA4の1,A7の4です。
 1とか4は、何処にあるんですか?
 Sheet3のB列にあらかじめ書かれている と言うことなんですか?
 そうだとすると、転記は3列分で 以下の対応関係で転記すると解釈していいですか?
   C列→D列
   D列→E列
   F列→G列

 転記データは全て文字列ですか?

 Sheet1のA列の番号は1からの連番ですか? 
 連番じゃないとしても、重複は無いですね?
 ※もし重複がある場合、どう転記するんですか?

(半平太) 2024/04/27(土) 12:17:06


 1と4はシート1のA列の4行めから1から連番で重複は無いです。
 シート3の5行目以降全て空欄。
 文字と数字のみ。
 説明不足大変申し訳ございません。
(ハナ) 2024/04/27(土) 22:08:32

 横からですが、こういう事なんでしょうか。
 >シート1のA列の数字選択でシート3のB列5行目から転記したいと思いす。
 やりたい事は、
「A列の任意のセルを選択した状態でマクロを実行するとSheet3に転記する」

    Sub test()
        Dim tmp As Range, n As Long
        For Each tmp In Selection
            With Worksheets("Sheet3")
                If tmp.Column = 1 Then
                    n = WorksheetFunction.Max(5, .Cells(Rows.Count, "B").End(xlUp).Row + 1)
                    .Cells(n, "B").Resize(, 6).Value = Cells(tmp.Row, "A").Resize(, 6).Value
                End If
            End With
        Next
    End Sub

 ※Sheet1がActiveSheetとします。

 やりたいことを時系列で箇条書きすると、伝わりやすいかもしれませんよ。
 説明を簡易にしようとして、情報が不足している気がします。
 もっと別視点での適した回答がある可能性があります。
 実務で使うコードじゃなくVBAの勉強です、ということかもしれませんが。
(羊カウント) 2024/04/27(土) 22:45:08

 ご指摘ありがとうございます。
 もう少し私自身理解した上で再度質問させて頂きます。
 ありがとうございました。 
(ハナ) 2024/04/28(日) 06:39:18

 私も殆ど同種のコードを書いておりました。
 重複を避けてコードは示しませんが、コメントの後半部分だけ追加しておきます。

 【補足】
 For Each r In Selection
 で列挙されるrの順番は、選択したセルの順序が保たれるようです。
 つまり、
 A4,A7,A6,A8の順序で選択したとすると、
 A4,A7,A6,A8の順序で取り出される。
 (A4,A6,A7,A8という上からの順序と思いがちだが、そうではないようです。
   このことを私は今更ながら知ったので、コードを書いて見る気になりました)

 ただし、
 A4,A7,A6,A8,・・・を選択した状態で、というのは「行数が多くなると難しい」かもしれません。
 一つでも間違うとやり直しになりますから。

 作業列に1,2,3,4などと順序を書き入れておき、
 ・フィルタでそれが記入されている行だけを抽出して転記し、
 ・作業列の昇順で並び替える、
 という方法が確実でしょう。
 これなら、行ごとに転記する手間も不要です。
 こちらを推奨します。コードは書きませんが。 研究してみて下さい。
(xyz) 2024/04/28(日) 06:45:11

 なお、作業列に振る順番数値ですが、同一数値があっても問題ありません。
 同一数値であれば、ソートをしたときに、その中で行の順序が逆転することはありません。今の順序が保たれます。
 また、空き番があっても問題ありません。

(xyz) 2024/04/28(日) 06:54:57


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.