簡體   English   中英

如何為單元格分配值?

[英]How to assign a value to a cell?

我正在嘗試導入文本文件並在Excel中處理它。

第一步是將數據分為2組:標題和內容。

我創建了兩個工作表。 然后導入文本數據。 然后確定數據文件的高度,寬度和項目數。

問題來了,試圖將標頭數據復制到工作表之一。 我沒有任何價值。

我嘗試分配為值:

Worksheets("TIME").Range(Cells(j, k)).Value = Range(Cells(i, k)).Value

作為固定值:

Worksheets("TIME").Range(Cells(j, k)).Value = 1

我在循環上放置了一個計數器,它們工作正常。

On Error Resume Next
Worksheets.Add.Name = "RAW"
Worksheets.Add.Name = "TIME"
Sheets("RAW").Select

'Import and copy data to RAW sheet. It is working so I did not copy it.

Range("A1").End(xlToRight).Select
WidthFile = ActiveCell.Column
Range("A1").End(xlDown).Select
HeightFile = ActiveCell.Row
Range("A1").Select
NumberObs = Application.WorksheetFunction.CountIf(ActiveSheet.Range _
              (Cells(1, 1), Cells(HeightFile, 1)), Range("A1").Value)
Sample = Range("A1").Value
j = 1

For i = 2 To HeightFile
    If Range(Cells(i, 1)).Value = Sample Then
        For k = 1 To WidthFile
            Worksheets("TIME").Range(Cells(j, k)).Value = _
                               Range(Cells(i, k)).Value
        Next
        j = j + 1
    End If
Next

我希望將RAW工作表上的第一個單元格與“ TIME”工作表上復制的“ RAW”工作表上的第一個單元格匹配的行作為導入數據。 我有一個空白的工作表。

我在RAW工作表中獲得的數據文件如下:
原始數據

TIME工作表上的預期結果應為:
TIME工作表預期結果示例
時間數據

建議在單個對象上執行多個語句時使用Objects並使用With語句 :即使用以下方法:

With Range("A1")
   WidthFile = .End(xlToRight).Column
   HeightFile= .End(xlDown).Row
End With

代替這個:

Range("A1").End(xlToRight).Select
WidthFile = ActiveCell.Column
Range("A1").End(xlDown).Select
HeightFile = ActiveCell.Row

另請注意, Worksheet.Cells屬性(Excel)返回一個Range因此請使用以下方法:

.Cells(j, k).Value

代替這個:

.Range(Cells(j, k)).Value

我已經對您提供的代碼進行了一些調整。 嘗試這個:

Sub test()
Dim wsRaw As Worksheet
Dim wsTime As Worksheet
Dim lRows As Long, lCols As Long
Dim lNbrObs As Long, vSample As Variant
Dim j As Long, i As Long, k As Long

    Rem Add these lines after the worksheets had been added
    With ThisWorkbook
        Set wsRaw = .Worksheets("RAW")
        Set wsTime = .Worksheets("TIME")
    End With

    With wsRaw

        lRows = .Cells(1).End(xlDown).Row
        lCols = .Cells(1).End(xlToRight).Column
        vSample = .Cells(1).Value2
        lNbrObs = Application.WorksheetFunction _
            .CountIf(.Cells(1).Resize(lRows), vSample)

        For i = 2 To lRows
            If .Cells(i, 1).Value2 = vSample Then
                j = 1 + j
                For k = 1 To lCols
                    wsTime.Cells(j, k).Value2 = .Cells(i, k).Value2

    Next: End If: Next: End With

    End Sub

暫無
暫無

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

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