1

7 枚のシートを含むワークブックのマクロを記録しました。2 つのシートは、多くのテキスト ファイルからデータをインポートし、それらを順番に並べます。他のシートは、このデータと与えられた他の式を使用して、多項式でグラフを作成します。したがって、マクロ プログラムは非常に大きくなります。このようなデータがあります

      A   B   C   D   E
R8    0   #   *   @   $
R9   0.05 #   *   @   $
R10  0.1  #   *   @   $
.     .   .   .   .   .
.     .   .   .   .   .
.     .   .   .   .   .
R108 5.0  #   *   @   $

上記のデータ
では、行8から108までの列AとBはインポートされたデータです
C、DとEは式で与えられます。

私の問題は、インポートした列 A (0~5) に同じデータがないことです。

データは 0~12、0~16、0~40 のように変化し続けます。そのため、最終行番号も毎回変わります。したがって、データが変更されるたびに、他のすべてのデータのマクロを記録する必要があります。

記録したマクロを編集して、行 108 (または 5.0) で停止せず、入力として指定された最後の値 ('R88' または 40.0 または 'R168' または 16.0 など) で停止するようにする等。)?

また、行 8 で指定された C、D & E で指定された式は、入力として指定された最後の行まで拡張する必要があります。

たとえば、シート 2 の A 列と B 列に 0 ~ 40 または 0 ~ 16 の値を持つテキスト ファイルをインポートするとします。ここで、これらの値をシート 1 の行 8、列 A & B、および列 C、D & E で指定された対応する式で、行 88 または行 168 まで拡張する必要があります。シート 1 の値は、変更が発生するにつれて変更する必要があります。行数や増加するステップ値に関係なく、インポートされたテキスト ファイル。

       A   B   C   D   E                    A   B   C   D   E
R8     0   #   *   @   $             R8     0   #   *   @   $
R9    0.2  #   *   @   $             R9    0.25 #   *   @   $
R10   0.4  #   *   @   $             R10   0.5  #   *   @   $
.      .   .   .   .   .             .      .   .   .   .   .
.      .   .   .   .   .             .      .   .   .   .   .
.      .   .   .   .   .             .      .   .   .   .   .
R88  16.0  #   *   @   $             R168  40.0  #   *   @   $

この問題を解決するために私を助けてください..

4

2 に答える 2

2

データがすべてのシートの同じセルで始まる場合、基本的な Excel 選択コマンドのいくつかを使用してすべてのデータを取得できます。

'Set up a range object.
Dim rng As Range
'Select the first cell in which data is going to be.  This example uses cell "A1".
Range("A1").Select
'The following line is equivalent to pressing Shift-End-DownArrow, which selects
'everything in the current column until an empty cell is encountered.
Range(Selection, Selection.End(xlDown)).Select
'The following line is equivalent to pressing Shift-End-RightArrow, which selects
'everything in the current row until an empty cell is encountered.
Range(Selection, Selection.End(xlToRight)).Select
'This selection is then a range containing all the continuous entries starting at cell A1.
'Set the Range variable to the current selection.
Set rng = Selection

Setオブジェクト変数に値を代入するときは、VBA でキーワードを使用することが重要です。

このデータをコピー先に貼り付けた後、同様の方法を使用してデータが占める範囲を取得し、次の関数を使用して数式をコピーする場所を決定できます。

Range.Column範囲内の最初の列番号を返します。
Range.Columns.Count指定された範囲の列数を返します。
Range.Row範囲の最初の行を返します。
Range.Rows.Count範囲内の行数を返します。上記のすべての関数で、実際の範囲オブジェクト
に置き換えます。Range

于 2012-09-04T18:32:16.753 に答える
0

テキスト ファイルからデータをコンパイルするコードが効率的である場合、つまり、ワークシートがセル A1 から開始され、行や列がスキップされず、予想されるデータ範囲外に空白以外のセルが存在しない場合、最も簡単な方法は次のとおりです。

Set rng = ActiveSheet.UsedRange

代わりに

Set rng = ActiveSheet.Range("A1").CurrentRegion

セル C8 から最後までの範囲を指定して数式を入力するには:

With ActiveSheet.UsedRange
  Set rng = .Offset(7, 2).Resize(.Rows.Count - 7, 3)
End With

数式がセル C8:E8 に既に存在する場合、これは

With ActiveSheet.UsedRange
  .Offset(7, 2).Resize(.Rows.Count - 7, 3).FillDown
End With
于 2015-09-11T20:13:11.800 に答える