私は現在の千鳥セットにサブ内2D配列から転送された情報を取得するために、VBAを経由して、より効率的な方法を探していますと範囲Excelブックの範囲。私は以下の例に必要なものを蒸留してコードを完成させました。どんな助けでも大歓迎です。エクセルVBAは:スタッガードを移植して2次元配列データ
私は、作業しているもの(入力、配列、出力)の例を記述した画像をリンクし、以下で使用しているコードの例を書いています。簡略化のためのワークブック内のSheet2とシート1として「入力シート」と「出力用紙」を定義してみましょう:
Option Explicit
Sub TransferData()
Dim myArray as Variant 'Define the array to hold the data.
Dim i as integer 'Define a generic loop counter variable.
myArray = Sheet1.Range("A1:F7") 'Pulls all the relevant data into the array.
myarrayのは、今まさに範囲のように見えます。 (私は3番目のリンクを投稿したいと思いますが、もう少し多くの担当者を獲得する必要があります)。私はそれがこのようになりますように、私の出力ファイルにデータを転送したい
:ここ
は、私は、現在の状況にアプローチする方法である:
For i = 1 to ubound(myArray)
Sheet2.Cells(i,1) = myArray(i,1)
Sheet2.Cells(i,3) = myArray(i,2)
Sheet2.Cells(i,6) = myArray(i,3)
Sheet2.Cells(i,7) = myArray(i,4)
Sheet2.Cells(i,8) = myArray(i,5)
Sheet2.Cells(i,9) = myArray(i,6)
Next i
End Sub
私の質問はこれです。どのように配列をつかんでいたかと同じように、配列のデータをずらした範囲に転送する方法があります。一度に範囲?例えば、の線に沿って何か:
Sheet2.Range("A1:A8") = myArray(1 to 7, 1) 'Note: this is total pseudocode
Sheet2.Range("C1:C8") = myArray(1 to 7, 2) 'Note: this is total pseudocode
等...等...私は、私がこれまで自分自身VBAのかなりの量を教えることができたと考えてい
けど間違いなくすべてを知らないと、これは私が助けが必要なものです。私はVBAからワークシートへの書き込み量を最小限にしようとしています。彼らは本当に彼らの通行料を取る。
ご協力いただきまして誠にありがとうございます。
ありがとうございます!
Sheet2などのセルC2の式として '= Sheet1!B1'を使用しているだけではないという理由があるとします。 – mwolfe02
また、それ自体は答えではありませんが、 ( 'Application.ScreenUpdating = False')あなたの既存のアルゴリズムを大いにアップしてください。ちょうどあなたのエラーハンドラであなたのルーチンを終了する前にそれを有効にすることを忘れないでください。 – mwolfe02
絶対に。まず、画像を追加してくれてありがとう! sheet1を編集しようとしているユーザーは行を削除する傾向があります。参照されたセルを削除すると#REFエラーが発生するのを避けようとしています。私の回避策は、配列全体に範囲全体をフラッシュし、素早く読み書きできるようにすることでした。それは理にかなっていますか? – Prej1