2017-12-28 41 views
0

ワークシートのフィルタリングされた範囲に基づいて行BおよびCをマージする必要があるワークシート(wsA) wsB)(どちらも同じワークブックにあります)。Excel VBA - 隣接するワークシートのフィルタリングされた行の数に基づいてX行の列を結合する

たとえば、データがフィルタされて4つの行(ヘッダーを含まない)だけが表示される場合、wsAでは行12、B12およびC12からB13およびC13をマージする必要があります。 B14およびC14、および最後にB15およびC15。

wsAでマージされる行の数は、常にwsBからのフィルタリングされたデータに存在する行の数に基づいています。 0にすることもできますし、100以上にすることもできます。

私は以下のコードを試みたが、ただWSAにそれらの行をマージすることにより、WSBで既存の行を反映するために表示されます。

filledRows = wsB.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1 
wsA.Range("B12:C" & filledRows).Merge 

私は何をしないのですか?問題を解決するには

+0

を以前に提供し、写真の後にしてくださいすることができますか?あなたが望むものを100%クリアすることはできません。つまり、 'B12:C12'をマージし、' B13:C13'をマージするには、各行をループし、2つのセルをマージして、カラムcにあるものが私はあなたが望むものを100%確信していません。 –

答えて

0

、コードは次のようにする必要があります:

filteredLastRow = ActiveSheet.UsedRange.Rows.Count 
filledRows = ActiveSheet.Range("A2:A" & filteredLastRow).SpecialCells(xlCellTypeVisible).Count 
Range("B12:C" & filledRows + 12).Merge True