簡體   English   中英

使用循環將一個工作表中的非合並單元復制到另一個工作表中的合並單元

[英]Copy non-merged cells from one worksheet to merged cells in another using a loop

我已經做了很多嘗試,都失敗了,並且在互聯網上尋找解決方案,但是我似乎無法確切地知道如何解決我的問題。 現在我希望你們能幫助我。

我正在嘗試從一個工作表(ws)復制單元格區域(非合並)到另一個工作表(omk)中包含合並單元格的區域。 我必須在20個范圍內執行此操作,因此我正在使用循環。 我到目前為止編寫的代碼粘貼在下面:

Dim omk, ws As Worksheet
Dim a, b, i, y, z As Integer
Dim x As Range

Set omk = Sheets("Omkostningsmodel")
Set ws = ActiveSheet

omk.Activate

a = 173
i = 187
For Each cell In Range("C187", "C206")
    z = 3
    b = 3
    For Each x In Range(Cells(i, z), Cells(i, 22))
        x.Value = ws.Cells(a, b)
        z = z + 1
        b = b + 1
        If z = 4 Or z = 13 Or z = 16 Then
            z = z + 1
        End If
    Next x
    a = a + 1
    i = i + 1
Next cell

我的問題是,列c和d(3和4)在工作表“ omk”中合並,因此我試圖使第二個循環跳過列d,同時在此情況下將工作表“ ws”中的列d保持“鎖定”發生。 但是,當我運行代碼時,似乎工作表“ ws”中的d列未鎖定?

我不確定,我已經足夠清楚了,所以如果您不能解決我的問題,請告訴我。

謝謝 :)

當您具有合並的列時,可以使用offset方法在下一列中填充值。 就像是:

Dim omk as Worksheet, ws As Worksheet
Dim a as Integer, b As Integer, i As Integer
Dim y As Integer, z As Integer, Coloffset As Integer
Dim x As Range, cell As Range

Set omk = Sheets("Omkostningsmodel")
Set ws = ActiveSheet

omk.Activate

a = 173
i = 187

For Each cell In Range("C187", "C206")
    z = 3
    b = 3
    Coloffset = 0
    For Each x In Range(Cells(i, z), Cells(i, 22))
        If x.Column = 4 Or x.Column = 13 Or x.Column = 16 Then
            Coloffset = Coloffset + 1
        End If

        x.Offset(0, Coloffset).Value = ws.Cells(a, b)

        b = b + 1
    Next x
    a = a + 1
    i = i + 1
Next cell

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM