1

現時点で私が直面している問題は、「Update」と呼ばれるモジュール内のサブプロシージャ (既に作成されています) であり、次のことを実行したいと考えています。

「Sheet2」のシートデータ(1行、A4:KL4)を選択し、その上に記録されているデータの順に「マスター」シートにコピーします。

サブ手順には、参照番号の以前のエントリを「マスター」シートで検索し、参照番号がまだ存在しない場合は「シート 2」の行データのみをコピーする別の機能も含める必要があります。

参照番号がすでに存在する場合は、以前のエントリの日付を確認する必要があります。同じ日付の場合は、サブ プロシージャで既に保存されているものを上書きする必要があります。日付が異なる場合は、サブ手順で「Sheet2」シートを新しい行に追加します。

誰かが助けてくれれば、とても感謝しています。他の投稿を確認し、以前の回答のコードの一部を使用してみましたが、うまくいかないようです。

Sub update1()
    Sheets("loading").Select
    Application.ScreenUpdating = False

    Sheets("Current Audit").Select
    Range("J76").Select
    Selection.Copy
    Range("AG4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("J77").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AF4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
         Range("B75").Select
    Selection.Copy
    Range("Q4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B76").Select
    Selection.Copy
    Range("R4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B77").Select
    Selection.Copy
    Range("S4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B78").Select
    Selection.Copy
    Range("T4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B79").Select
    Selection.Copy
    Range("U4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B80").Select
    Selection.Copy
    Range("V4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B81").Select
    Selection.Copy
    Range("W4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
            Application.CutCopyMode = False
    Range("B82").Select
    Selection.Copy
    Range("X4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B83").Select
    Selection.Copy
    Range("Y4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B84").Select
    Selection.Copy
    Range("Z4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
            Application.CutCopyMode = False
    Range("B85").Select
    Selection.Copy
    Range("AA4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B86").Select
    Selection.Copy
    Range("AB4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B87").Select
    Selection.Copy
    Range("AC4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
            Application.CutCopyMode = False
    Range("B88").Select
    Selection.Copy
    Range("AD4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B89").Select
    Selection.Copy
    Range("AE4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False


    Range("AF5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
    Range("AG5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"

        Range("Q5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("R5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
    Range("S5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("T5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
     Range("U5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("V5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
    Range("W5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("X5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
       Range("Y5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("Z5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
     Range("AA5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("AB5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
    Range("AC5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("AD5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
      Range("AE5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"

        Range("GA5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("GE5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("GI5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("GM5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("GP5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("GR5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("GU5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("GW5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("GZ5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("HB5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("HE5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("HH5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
        Range("HK5").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C=""N/A"",""N/A"",R[-1]C*100)"
End Sub
4

1 に答える 1

0

最初にデータを配列に保存し、それを操作してから、結果を新しい範囲にダンプすることを好みます。配列は、一般的に操作が簡単で高速です。また、数式の配列を作成する方がはるかに簡単です (この場合、配列は "=IF(R[-1]C=""N/A""," "該当なし"",R[-1]C*100)"

例えば

Dim YourArrayContainingFormulas() As Variant
Redim YourArrayContainingFormulas(1 to 10)
For i = 1 To 10
  YourArrayContainingFormulas(i)="=YourFormula"
Next i

次のように、選択した範囲にコピーします。

With ActiveCell
  Range(.Offest(0,0),.Offset(0,9)).Value=YourArrayContainingFormulas
End With
于 2012-06-12T18:15:05.343 に答える