• ベストアンサー

【Excel VBA】抽出したデータを書式へ

Excel2003を使用しています。 Excelで作成→送付されてくる全店データの中から自店のデータのみを抽出し、全店データと同じ書式で自店のみのデータを作成したく、下記のようにコードを書きました。 ------------------------------------------------------- Sub Macro1() Dim i As Long Dim j As Long Dim LastR As Long LastR = Sheets("全店データ").Range("E65536").End(xlUp).Row With Sheets("自店データ")  For i = 34 To LastR   If Sheets("全店データ").Cells(i, "E").Value Like "*A店*" Then    .Cells(j, "C").Value = Sheets("全店データ").Cells(i, "C").Value    .Cells(j, "E").Value = Sheets("全店データ").Cells(i, "E").Value    .Cells(j, "I").Value = Sheets("全店データ").Cells(i, "I").Value    .Cells(j, "W").Value = Sheets("全店データ").Cells(i, "W").Value    .Cells(j, "AA").Value = Sheets("全店データ").Cells(i, "AA").Value    .Cells(j, "AE").Value = Sheets("全店データ").Cells(i, "AE").Value    .Cells(j, "AI").Value = Sheets("全店データ").Cells(i, "AI").Value    .Cells(j + 1, "C").Value = Sheets("全店データ").Cells(i + 1, "C").Value    .Cells(j + 1, "I").Value = Sheets("全店データ").Cells(i + 1, "I").Value    j = j + 2   End If  Next i End With End Sub ------------------------------------------------------- 元の書式は、データ1件が2行で、結合セルも含まれているので、コピペするより、Value = Value が扱いやすい(?)かと思い、上記のように書いてみました。 自店のデータが1ページ分(14件分28行で、セル34行目~61行目)内に収まる場合は問題ないのですが、それ以上になった場合をどのように記述すればよいのか躓いています。 書式は、  1ページ目 34行目~61行目  2ページ目 73行目~128行目  3ページ目 140行目~195行目  4ページ目 207行目~262行目  5ページ目 274行目~329行目  6ページ目 341行目~396行目 このような書式にデータを代入する場合は、上記の方法では難しいでしょうか? 説明が分かりづらくて申し訳ありませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

jの値の初期値(=34?)が設定されていないようですが、jの値がご提示のように行数に応じて変化してくれればいいのですよね? 現状のものを修正するのであれば、少々わかりづらいかも知れませんが… j=j+2として次に記入すべき行を求めていますが、この時に、ページの終わりだったらj=j+13としてあげればよいと思われます。 If (j - 60) Mod 67 = 0 Then j = j + 13 Else j = j + 2 (もしかすると、全体がずれているかも知れませんが…) 別の考え方として、 記入している件数をカウントする変数(例えばcnt)を作成しておきます。 これに対して、記入すべき行数が求められる関数を作成しておいて、その関数が示す行に記入するという考え方もできます。 (このほうが、考えやすいと思います) 関数をg()とするなら、 g(1)=34, g(14)=60, g(15)=73, g(42)=127, g(43)=140 ・・・・となるようなもの。 今回の場合は規則性があるので、g()は外部関数にするほどでもなく  Int((cnt - 15) / 28) * 67 + ((cnt - 15) Mod 28) * 2 + 73 の1行で表すことができますが、こうしておけば、もっと複雑な場合や、単に数式だけでは表せない場合などでも対応可能ですし、そのような場合は別関数にしてしまえば扱いやすくなると思います。

KOH3193
質問者

お礼

アドバイスありがとうございます。 > jの値の初期値(=34?)が設定されていないようですが あーでもないこーでもないとコードを書き換えながら試した後、質問文にコードをコピペしましたので、jの初期値(=34)を記述するのを忘れていました…。 今回の場合は規則性があるので、Ifで条件を追加すれば、うまく動作しそうなのに、その条件をどのように表示してよいかわからず、質問させていただきましたが、丁寧に説明してくださったおかげで理解することができ、無事、解決に至りました。 ありがとうございました。

その他の回答 (4)

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.5

#3さまと基本的に同趣旨の内容ですが…。 -------------------------------------  自店1件目 ⇒ 34~35行目  自店18件目 ⇒ 79~80行目  自店63件目 ⇒ 180~181行目 に転記したい場合、 例えば、下記のように 【自店○件目のデータを■行目に転記すればよいか】 を計算で求めてやれば、ご要望のように動作するはずです。 '==========================↓ ココカラ ↓========================== Sub Macro1()  Dim i   As Long  Dim j   As Long  Dim k   As Long  Dim LastR As Long  Dim alSht As Worksheet  Set alSht = Sheets("全店データ")  LastR = alSht.Range("E65536").End(xlUp).Row  j = 1  With Sheets("自店データ")   For i = 34 To LastR    If alSht.Cells(i, "E").Value Like "*A店*" Then     k = 6 + Int((j + 13) / 28) * 67 + ((j + 13) Mod 28) * 2     .Cells(k, "C").Value = alSht.Cells(i, "C").Value     .Cells(k, "E").Value = alSht.Cells(i, "E").Value     .Cells(k, "I").Value = alSht.Cells(i, "I").Value     .Cells(k, "W").Value = alSht.Cells(i, "W").Value     .Cells(k, "AA").Value = alSht.Cells(i, "AA").Value     .Cells(k, "AE").Value = alSht.Cells(i, "AE").Value     .Cells(k, "AI").Value = alSht.Cells(i, "AI").Value     .Cells(k + 1, "C").Value = alSht.Cells(i + 1, "C").Value     .Cells(k + 1, "I").Value = alSht.Cells(i + 1, "I").Value     j = j + 1    End If   Next i  End With End Sub '==========================↑ ココマデ ↑========================== なお、余談ですが、 VBAのMOD演算子と、ワークシート関数のMOD関数では、 被除数が負数のときの結果が異なるので注意が必要です。 以上ご参考まで。

KOH3193
質問者

お礼

アドバイスありがとうございます。 記載していただいたコードで試してみたところ、希望通り動作しました。 順を追って詳しく説明していただいたおかげで、わかりやすくて助かりました。 > 自店○件目のデータを■行目に転記すればよいか ↑をうまく計算で求めることができませんでした。 VBAのMOD演算子は今回初めて使用しましたが、大変勉強になりました。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

エクセルでは「書式」は特別な意味が有るから、この質問には使わないで、様式やフォーマットや項目の配置などと表現すべきと思います。実際は行も列も多いのでしょうが、コードを書くより、少数列、行の模擬実例にして、質問に書いてください。 後自分の場合に引きなおすのは簡単なはずです。あなたの表の様子が読者には見えません。 読者でコードから逆解析せよ、質問文でわかる人だけ答えろと言うのは、質問者として、配慮が足りない。 ここの質問コーナーは個人の要求を満たす一方、公器でもあるとおもう。 ーーー j = j + 2 は全店分で元の表が2行ずつなのか?そういうことも例を見ないと判りにくい。

KOH3193
質問者

お礼

アドバイスありがとうございます。 > 少数列、行の模擬実例にして 表として記載することが難しかったため、コードを記載させていただきましたが、幸い今回は他の方からいただいた回答で無事解決いたしました。 直接の回答ではない細かいところまでアドバイスをいただき、お手数をおかけしました。

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.2

>書式のページ間は不要データではなく、小計や合計を表示する行などが含まれているので、全て削除することはできません。 列データに影響があるということかな? 作業シートでの処理ですから、 1.元シートを全セルコピーし、作業シートに値貼り付け 2.ページ間の行を削除 を提示コードの当初に実行し、Sheets("全店データ").をSheets("作業シート").に変更するということです。

KOH3193
質問者

お礼

再度のアドバイスありがとうございます。 データ転記先の「自店データ」シートも元シートの「全店データ」シートと同じ書式のため、転記するデータが1ページ分以上になった場合に、例えば2ページ目の1件目のデータを転記するセルをどのように指定したらよいのかがわからず、質問させていただきました。 今回は他の方からいただいた回答で解決できました。 何度もお手数をおかけして申し訳ありません。ありがとうございました。

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.1

私なら作業シートを作成しページ間の不要データを削除します。

KOH3193
質問者

お礼

アドバイスありがとうございます。 説明不足で申し訳なかったのですが、書式のページ間は不要データではなく、小計や合計を表示する行などが含まれているので、全て削除することはできません。

関連するQ&A

  • 【Excel VBA】データ貼り付けの開始位置について

    Excel2003を使用しています。 先日、こちらでアドバイスをいただきながら、下記のようなマクロを作りました。内容はあるセルの値と同じ名前のシートへデータをコピーするというものです。 Sheet1に貼り付け元のデータが表形式であり、必要なデータのみ該当のシートへコピーします。マクロ実行後は、別の新しいデータをSheet1へコピペして、またマクロを実行するのですが、その際、データの貼り付け開始位置を前回マクロを実行して貼り付けられたデータから2行空けたいのですが、可能でしょうか? ________________________________________________________________________________________________________________________________ Sub test3() Dim n As Long Dim i As Long Dim j As Long  Worksheets("Sheet1").Activate   For n = 4 To Cells(Rows.Count, 2).End(xlUp).Row    If Cells(n, 3).Value <> "" Then     With Worksheets(CStr(Cells(n, 3).Value))       i = .Cells(Rows.Count, 3).End(xlUp).Row + 1       Cells(n, 2).Copy .Cells(i, 2)       Cells(n, 7).Resize(, 2).Copy .Cells(i, 4)       Cells(n, 11).Copy .Cells(i, 3)     End With    End If    If Cells(n, 13).Value <> "" Then     With Worksheets(CStr(Cells(n, 13).Value))       j = .Cells(Rows.Count, 3).End(xlUp).Row + 1       Cells(n, 12).Copy .Cells(j, 2)       Cells(n, 17).Copy .Cells(j, 4)       Cells(n, 18).Copy .Cells(j, 6)       Cells(n, 11).Copy .Cells(j, 3)     End With    End If   Next n End Sub

  • 【Excel VBA】カンマ毎にデータを区切る

    はじめて質問をさせて頂きます。 Excel VBAは初心者です。 仕事で必要なため、本を読みながら考えておりましたが、 手も足も出ない状態です。 【質問内容】 Excel VBAにて、ExcelファイルのA列のみに格納されているデータを カンマ「,」の位置毎に区切ります。 ※格納されているデータ例:A,B,C,D,E Excelの区切り位置にて、カンマで区切る処理と同じです。 A1から処理を開始し、A列のデータがなくなるまで 上記の処理を行います。 下記のプログラムを実行すると、1行目は正常にカンマ毎に 区切られますが、2行目以降はカンマ毎に区切られず、 そのままの状態です。 どこに問題があり、どのように修正すれば良いのでしょうか、 ご教示頂けると助かります。宜しくお願いします。 【プログラム】 Sub カンマ毎に区切る() Dim mydata As String Dim myArray() As String Dim i, j As Integer j = 0 Do While Cells(j + 1, "A").Value <> "" mydata = Cells(j + 1, 1) myArray() = Split(mydata, ",") For i = 0 To UBound(myArray) Cells(1, i + 1).Value = myArray(i) Next j = j + 1 Loop End Sub

  • VBAでの質問

    お世話になります。 下記の記述で、「←」の矢印の記述で、 Cells.(5,2)がブランクでなければ、 「→」から進めたいのですが、 どの様に記述すれば宜しいでしょうか ご教示お願いします。 Sub 表記入() Dim Data As Range Dim i As Integer Dim j As Integer Dim k As Integer Set Data = Sheets("集計").Range("A2").CurrentRegion j = 16 k = 0 With Sheets("表") For i = 3 To Data.Rows.Count If Data.Cells(i, 51) <> "" Then .Cells(5, 2) = Data.Cells(i, 3)  ← .Cells(5, 7) = Data.Cells(i, 4) → .Cells(j, 2) = Data.Cells(i, 10) .Cells(j, 6) = Data.Cells(i, 11) & Data.Cells(i, 12) .Cells(j, 14) = Data.Cells(i, 51) Else End If k = k + 1 If k = 10 Then j = j + 18 k = 0 Else j = j + 1 End If End If Next i End With End Sub

  • Excel VBA 貼付先のコントロール?

    御世話になります。 色々調べて下記の構文が出来たのですが、あと一歩が足りません。 製造シートのA列のデータを抽出シートのRtmが代入されたセルの上から7行目以下に貼付たいのです。 宜しくお願い致します。 Sub sappri() Dim nTotal, i Dim Rtm As Variant nTotal = Sheets("製造データ").Range("A1").End(xlDown).Row Rtm = Sheets("製造データ").Range("J1") With Sheets("抽出") For i = 1 To nTotal .Cells(i * 3 - 2, Rtm).Value = Sheets("製造データ").Cells(i, 1).Value Next i End With End Sub

  • Excel VBAデータ登録のスピードアップしたい

    下記のようなコードがあります。 ■input データ閲覧・登録・編集シート ■data データを格納するシート inputシートとdataシートでdataの受け渡しを行っているのですが、データレコードを切り替えるだけで20秒ちょっとかかるため、作業効率が悪いです。 この時間を1~2秒ぐらいまで減らすには、どのように修正すれば、いいでしょうか?どうかアドバイスをお願いいたします。 Private Sub datatouroku() ’データを登録する Dim touroku As Integer Dim fRange As Range Set fRange = Sheets("data").Columns(1).Find(What:=Range("BC1").Value, _ LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) touroku = fRange.Row '検索されたNoの行位置を求める Sheets("data").Cells(touroku, 1).Value = Range("BC1:BE1").Value Sheets("data").Cells(touroku, 2).Value = Range("AX1").Value Sheets("data").Cells(touroku, 3).Value = Range("I4").Value   '・・・上記のデータが全部で256件あります。 End Sub ------------------------------------------ Private Sub hyouji() 'データを表示させる Dim fRange As Range Dim kensaku As Long Set fRange = Sheets("data").Columns(1).Find(What:=Range("BC1").Value, _ LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)    If (fRange Is Nothing) Then '見つからなかった?    MsgBox "入力された顧客コードが存在しません。", vbExclamation    Exit Sub    End If    kensaku = fRange.Row '検索された顧客DCの行位置を求める     Range("BC1:BE1").Value = Sheets("data").Cells(kensaku, 1).Value     Range("AX1").Value = Sheets("data").Cells(kensaku, 2).Value    Range("I4").Value = Sheets("data").Cells(kensaku, 3).Value     '・・・上記のデータが全部で256件あります。 Set trg = Sheets("data").Cells(kensaku, 1) End Sub

  • 【Excel VBA】データの最終行について

    Excel2003を使用しています。 ある一覧表形式のデータSheet1をSheet2に値のみコピーして、このSheet2を“印刷用”として、ページ設定等をして、印刷のみに使用しようと思っています。 Sheet2のI列、J列、K列には数値が入力されていて、I列、J列、K列のデータの最終行の1行下に、それぞれ6行目からデータ最終行までの合計の数式が入力されるよう、コードを追加したのですが、数式は入力されるものの、入力したい行に数式が入力されません。 マクロを実行して、数式が入力された行を見てみると、301行目に入力されていました。 Sheet1は別のシートのデータを数式により表示していて、数式が300行まで入力されているので、Sheet2の元になっているSheet1の影響(?)なのかな~?と…。こういう場合、どうすればいいでしょうか? コードは下記のようになっています。 よろしくお願いします。 ---------------------------------------- Sub 印刷用作成() Dim i As Integer Dim j As Long Sheets("Sheet1").Activate Range("B6:L6", Range("L6").End(xlDown)).Select Selection.Copy Sheets("Sheet2").Select Range("B6").PasteSpecial xlPasteValues Application.CutCopyMode = False For i = 9 To 11 j = Application.Max(j, Cells(65536, i).End(xlUp).Row + 1) Next For i = 9 To 11 Cells(j, i).FormulaR1C1 = "=SUM(R2C[0]:R[-1]C[0])" Next i End Sub

  • Next,End Withのエラー

    Sub 入力() If Sheets("入力").Range("D3").Value = "" Then MsgBox "客先名を入力して下さい" Else Dim K最終行 As Long Dim T最終行 As Long Dim i As Integer With Sheets("入力") For i = 3 To 12 If .Cells(i, "H").Value <> "" Then U最終行 = Sheets("注文書").Range("G65536").End(xlUp).Row + 1 If U最終行 = 461 Then MsgBox "注文書がいっぱいです" Exit Sub Else End If E最終行 = Sheets("営業確認").Range("G65536").End(xlUp).Row + 1 Sheets("営業確認").Range("k" & E最終行).Value = .Cells(i, "b").Value Sheets("営業確認").Range("b" & E最終行).Value = .Cells(i, "c").Value Sheets("営業確認").Range("c" & E最終行).Value = .Cells(i, "d").Value Sheets("営業確認").Range("d" & E最終行).Value = .Cells(i, "e").Value Sheets("営業確認").Range("g" & E最終行).Value = .Cells(i, "h").Value Sheets("営業確認").Range("f" & E最終行).Value = .Cells(i, "i").Value Sheets("営業確認").Range("i" & E最終行).Value = .Cells(i, "m").Value Sheets("営業確認").Range("h" & E最終行).Value = .Cells(i, "p").Value Else End If Select Case .Cells(i, "o").Value Case "北" K最終行 = Sheets("北").Range("h65536").End(xlUp).Row + 1 Sheets("北").Range("B" & K最終行).Value = .Cells(3, "C").Value Sheets("北").Range("c" & K最終行).Value = .Cells(3, "b").Value Case "中" T最終行 = Sheets("中").Range("H65536").End(xlUp).Row + 1 Sheets("中").Range("b" & T最終行).Value = .Cells(3, "c").Value Sheets("中").Range("c" & T最終行).Value = .Cells(3, "b").Value End Select Exit Sub Dim Dummy As Worksheet Dim SheetName As String Dim OTA As Long Dim GEN As Long Dim SheetName2 As String With Sheets("入力") '3行目~22行目まで For j = 3 To 22 SheetName = Sheets("入力").Range("D3").Value On Error Resume Next Set Dummy = Sheets(SheetName) SheetName2 = .Cells(i, 14).Value 'もしシートがあれば・・・ If Err.Number = 0 Then 'SheetName2は入力シートのN行 SheetName2 = .Cells(i, 14).Value OTA = Sheets(SheetName2).Range("B65536").End(xlUp).Row + 1 Sheets(SheetName2).Range("A7").Value = .Cells(3, "D").Value Sheets(SheetName2).Range("C3").Value = .Cells(3, "C").Value Sheets(SheetName2).Range("B" & OTA).Value = .Cells(i, "H").Value Sheets(SheetName2).Range("I" & OTA).Value = .Cells(i, "I").Value Sheets(SheetName2).Range("F" & OTA).Value = .Cells(i, "K").Value Sheets(SheetName2).Range("H" & OTA).Value = .Cells(i, "L").Value Sheets(SheetName2).Range("J" & OTA).Value = .Cells(i, "M").Value 'シートが無ければ・・・ Else GEN = Sheets("原紙").Range("B65536").End(xlUp).Row + 1 Sheets("原紙").Range("A7").Value = .Cells(3, "D").Value Sheets("原紙").Range("C3").Value = .Cells(3, "C").Value Sheets("原紙").Range("B" & GEN).Value = .Cells(i, "H").Value Sheets("原紙").Range("I" & GEN).Value = .Cells(i, "I").Value Sheets("原紙").Range("F" & GEN).Value = .Cells(i, "K").Value Sheets("原紙").Range("H" & GEN).Value = .Cells(i, "L").Value Sheets("原紙").Range("J" & GEN).Value = .Cells(i, "M").Value '原紙をコピーする Sheets("原紙").Copy BEFORE:=Sheets(1) 'シートの名前を市場コードにする Sheets(1).Name = SheetName Next End With Exit Sub On Error GoTo 0 Sheets("原紙").Select Range("C3:E3,A7,B16:B35,F16:F35,H16:J35").Select Range("H35").Activate Selection.ClearContents Sheets("入力").Select Sheets("入力").Range("D3,G3:J12,L3:M12").Value = "" Sheets("入力").Range("D3").Select Range("B3").Formula = "=IF(D3="""","""",VLOOKUP(D3,'\\Seika-sv01\支店共有\マーケティング用\[担当者リスト.xls]リスト形式'!$B:$D,3,FALSE))" MsgBox "入力が完了しました" End If End Sub 上記のようにマクロを組みましたがエラーが出てしまいます。

  • Excel VBA教えてください

    Excel シート1のA2~E2に数字を入力します A4~E4に A2*10・B2*10・・・と A5~E5に A2*15・B2*15・・・と計算式がはいっています A4~E4の結果とA5~E5の結果をA10~E10以降に代入します ただA2~E2の数字は毎回変わるので履歴を残したいです 下記のプログラム何処を直せばよいですか? Private Sub CommandButton1_Click() Dim LastR As Long LastR = Range("A65536").End(xlUp).Row + 1 If LastR < 10 Then LastR = 10 Range(Cells(LastR, "A"), Cells(LastR, "E")).Value = Range("A4:E5").Value End Sub

  • VBAの転記について

    With Sheets("入力") '3行目~22行目まで For i = 5 To 24 SheetName = Sheets("入力").Cells(i, "C").Value On Error Resume Next Set Dummy = Sheets(SheetName) SheetName2 = .Cells(i, "C").Value U最終行 = Sheets(SheetName2).Range("C65536").End(xlUp).Row + 1 If U最終行 = 39 Then Sheets(SheetName2).Copy BEFORE:=ActiveSheet Sheets(SheetName).Delete End If If Err.Number = 0 Then A = Sheets(SheetName2).Range("C65536").End(xlUp).Row + 1 Sheets(SheetName2).Range("C" & A).Value = .Cells(i, "G").Value Sheets(SheetName2).Range("D" & A).Value = .Cells(i, "I").Value Sheets(SheetName2).Range("E" & A).Value = .Cells(i, "L").Value Sheets(SheetName2).Range("F" & A).Value = .Cells(i, "N").Value Sheets(SheetName2).Range("G" & A).Value = .Cells(i, "P").Value Sheets(SheetName2).Range("H" & A).Value = .Cells(i, "R").Value Sheets(SheetName2).Range("I" & A).Value = .Cells(i, "T").Value Sheets(SheetName2).Range("K" & A).Value = .Cells(i, "V").Value Sheets(SheetName2).Range("L" & A).Value = .Cells(i, "X").Value ElseIf .Cells(i, "C").Value <> "" Then G = Sheets("原紙").Range("C65536").End(xlUp).Row + 1 Sheets("原紙").Range("B1").Value = .Cells(i, "D").Value Sheets("原紙").Range("B4").Value = .Cells(2, "D").Value Sheets("原紙").Range("C" & G).Value = .Cells(i, "G").Value Sheets("原紙").Range("D" & G).Value = .Cells(i, "I").Value Sheets("原紙").Range("E" & G).Value = .Cells(i, "L").Value Sheets("原紙").Range("F" & G).Value = .Cells(i, "N").Value Sheets("原紙").Range("G" & G).Value = .Cells(i, "P").Value Sheets("原紙").Range("H" & G).Value = .Cells(i, "R").Value Sheets("原紙").Range("I" & G).Value = .Cells(i, "T").Value Sheets("原紙").Range("K" & G).Value = .Cells(i, "V").Value Sheets("原紙").Range("L" & G).Value = .Cells(i, "X").Value '原紙をコピーする Sheets("原紙").Copy BEFORE:=Sheets(1) 'シートの名前を市場コードにする Sheets(1).Name = SheetName End If Next i End With On Error GoTo 0 上記のVBAを作成しましたが、 C行の値ごとの転記(G~Xの値)が出来ません。 どこが間違いか教えていただけないでしょうか。

  • エクセル マクロ 抽出

    教えてください。 ○と記入されたセルを参照して、一つ上のセル・A列にある同じ行のセル・ 9行目にある同じ列のセルを抽出しようとしています。 下記の通り入力すると 行数=値.Rowでエラーが出たしまいました。 試行錯誤頑張りましたが解決できそうにありませんのでお力を貸して頂けないでしょうか。 Sub 抽出() Dim i, 行数, 列数 As Long Dim 値 As Range i = 0 行数 = 値.Row 列数 = 値.Column For Each 値 In Sheets("sheet1").Range("C12:R171") If 値.Value = "○" Then i = i + 1 With Sheets("sheet2") .Cells(i, 3).Value = Sheets("sheet1").Cells(行数, 1).Value .Cells(i, 4).Value = Sheets("sheet1").Cells(9, 列数).Value .Cells(i, 5).Value = 値.Offset(-1, 0).Value End With End If Next End Sub

専門家に質問してみよう