0

MS Excel ファイルの最初のワークシートにテーブルがあります。新しいワークシートを作成する場合、最初のワークシートのテーブルから特定の行と列を入力したいと思います。

具体的には、最初のワークシートに次の表があるとします。

________________________________________________________
| Header 1 | Header 2 | Header 3 | Header 4 | Header 5 |
-------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------

次に、新しいワークシートをクリックすると、次のように自動的に表示されます。

__________________________________
| Header 1 | Header 4 | Header 5 |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------

これを達成する方法についての指針はありますか? VB でのプログラミングに慣れていないので、マクロの作成は避けたいと思います。しかし、それが唯一の選択肢である場合、私は喜んでそれを検討します。

4

2 に答える 2

1

マクロを使用する必要があります。(ThisWorkbookスナップショットを参照)に、このコードを貼り付けます

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim ws As Worksheet

    '~~> This is where you set the input sheet
    Set ws = Sheet1

    '~~> the range that you need to replicate
    ws.Range("A1:A5,D1:E5").Copy

    '~~> I am doing paste special values
    '~~> Change it to `xlPasteAll` if you need formats to be copied as well
    Sh.Range("A1").PasteSpecial xlPasteValues

    Application.CutCopyMode = False
End Sub

スナップショット

Sheet1 にこのデータがあるとします。

ここに画像の説明を入力

これで、シートが追加されるたびに、データが新しいシートにコピーされます。

ここに画像の説明を入力

コードをここに貼り付ける必要があります

ここに画像の説明を入力

:

この方法の最大の欠点は、元に戻すリストが失われることです。

于 2012-08-04T18:00:49.893 に答える
0

マクロを避けたい場合は、Index、Match、および Row 関数の組み合わせで解決策を見つけることができます。

=Match(ColumHeader2,ColumHeaders1,0)

Sheet1の列が表示されます

=Index(Sheet1!A1,Row(Sheet2!CellRef),Match(ColumHeader2,ColumHeaders1,0))

シート 2 に転置される値が得られます

CellRef = addressデータを転置するセルの。

式はsheet2!A2次のようになります。

=INDEX(Sheet1!$A$1:$F$11,ROW(Sheet2!A2),MATCH(A$1,Sheet1!$A$1:$F$1;0))

Sheet1!$A$1:$F$11= シート 1 のヘッダーを含むデータ範囲

Sheet1!$A$1:$F$1= シート 1 のヘッダー範囲

転置された値を含む可能性のあるシート 2 のすべてのセルに数式をコピーするだけです。

于 2012-08-05T11:43:45.047 に答える