2

シナリオ: デリケートな資料のため、実際のワークブックを投稿することはできませんが、できる限り詳しく説明します。

各シートはブランチに分割されます。つまり、シート 2 はブランチ 2、シート 3 はブランチ 3 などです。各シートの列は同じです。列Aには支店番号があります。列 B には無関係な情報が含まれているため、その列を非表示にします。列 C にはシステム番号があります (各アカウントに固有です。

意図: という別のシートを作成したいと思いますCallOuts。いくつかの行を (さまざまなブランチから) コピーして「マスター シート」に貼り付けたい ( )各ブランチに移動する代わりにCallOuts、シートで作業できます。CallOutsそのため、セルを編集するたびに、ブランチ シートのまったく同じセルが更新/変更され、マスター シートとは逆になります。

問題: MS Excel には、セルを追加する「形式を選択して貼り付け」機能があることを知っています。それに関する問題は、セル番号をリンクしているため、マスターシートを並べ替えると、行が間違ったブランチシートに置き換えられます。

例: System# J112 がブランチ 2 シートの行 2 にあり、リンクがマスター シートの行 4 に貼り付けられている場合、マスター シートを更新してから再ソートすると、System# が行に移動します。 2 (マスター シート上) 行 4 (マスター上) にあるものはすべて、行 2、分岐 2 シートになります。

マスターシートから行全体をコピーして貼り付けることができるマクロを考えていました。ある種のケース選択を行って、列 A にどのブランチがあるかを確認し、ブランチ シートで同じシステム # を見つけて、行全体を貼り付けます。

私の VBA レベルはせいぜい初心者なので、助けていただければ幸いです。

4

1 に答える 1

0

OK、あなたの試みを以下に示しました。コードがどのように機能するかはわかりませんが、正しい方向に進んでいるようです。ただし、Case 構文はこの状況には適していないと思います。「CallOuts」シートの内容を読み取り、そのデータを使用して個々のブランチ シートを更新するマクロが必要なだけです。このマクロはあなたのために働くはずです:

Sub UpdateRecordsFromMasterSheet()

Dim wksht As Worksheet
Dim wkb As Workbook
Dim row As Range
Dim Row_to_Update As Range

Dim sysnum As Variant

Set wbk = ThisWorkbook

Application.ScreenUpdating = False

For Each row In Sheets("CallOuts").UsedRange.Rows
    row.EntireRow.Copy
    sysnum = row.Cells(1, 3).Value
    For Each wksht In ActiveWorkbook.Worksheets
        For Each Row_to_Update In wksht.UsedRange.Rows
            If Row_to_Update.Cells(1, 3).Value = sysnum Then
                Row_to_Update.PasteSpecial
            End If
        Next Row_to_Update
    Next wksht
Next row

Application.ScreenUpdating = True

End Sub

これは、列「C」にシステム番号があることを前提としています。従業員に一連の行を割り当てるたびに、従業員がそれらの行を更新し、そのデータを「CallOuts」シートに貼り付けます。次に、このマクロを実行すると、「CallOuts」シートの内容に基づいて個々のブランチ シートが更新されます。

あなたの視覚的な人がここにいる場合、それはどのように見えるかです:

更新された吹き出しシートは次のとおりです。 コールアウトシート

マクロの前にブランチがどのように見えるかを次に示します。 前マクロ

マクロの実行後に更新されたブランチは次のとおりです。 AfterMacro

それを試してみて、それがどのように機能するか教えてください。注: これは、このようなことを行う方法を示すためのほんの始まりに過ぎません。従業員が提出する実際のワークブックをマクロ ループで処理することにより、このプロセスをより効率的にすることができます。毎回「CallOuts」シートにデータを追加します。幸運を。

于 2012-10-09T20:42:45.837 に答える