Công thức Offset (2 người xem)

  • Thread starter Thread starter le tin
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

le tin

Học mãi
Tham gia
22/10/07
Bài viết
722
Được thích
560
Tôi dùng công thức Offset để chọn 1 vùng , tương tự trong VBA là gì,nhờ các bạn chỉ hộ.Cảm ơn
 
Ý mình là viết đoạn code trong VBA mà bạn , trong đó tìm không thấy .
 
Ý mình là viết đoạn code trong VBA mà bạn , trong đó tìm không thấy .
Bạn xem trong phần Resize (Bài của Bác SA_DQ).
Đây là ví dụ từ "OldRng" tạo ra New01, 02, ...

PHP:
Sub Thay()
[A1:D10].Name = "OldRng"
Range("OldRng").Offset(1, 2).Name = "New01" 'dời qua 2 cột, xuống 1 dòng
Range("OldRng").Resize(2, 3).Name = "New02" 'từ OldRng chỉ lấy 2 dòng va 3 cột
Range("OldRng").Resize(2, 3).Offset(1, 2).Name = "New03" 'từ OldRng chỉ lấy 2 dòng va 3 cột và dời qua 2 cột và xuống 2 dòng
Range("OldRng").Cells(1, 2).Name = "New04" 'tu OldRng chi lay dong 1 cot 2
End Sub
 
Offset trong VBA cũng gần giống vậy!
Cú pháp: Là địa chỉ ô nguồn rồi (.)Offset(hàng, cột). Ví dụ:
Range("A1").Offset(5, 2).Value = ô C6
Range("A1").Offset(, 2).Value = ô C1
Range("A1").Offset(5).Value = ô A6
Vầy chắc bạn đã hiểu rồi chứ!
Thân.
 
Cảm ơn các bạn , nhưng đó là 1 ô .
Ở đây mình muốn 1 VÙNG kia mà
 
Nếu vùng thì có hai cách!
C1: Bạn lấy range của ô đầu vùng đó rồi dùng Offset như trên.
C2: Bạn Set 1 vùng tạm rồi dùng nó làm 1 mảng lấy dữ liệu. Ví dụ:
PHP:
Sub thu()
Set Vung = range("A1:D10")
k = 1
For i = 1 to 10
For j = 1 to 4
Cells(k,6) = vung.cells(i,j).Value
k = k +1
next
next
End Sub
Cài hàm Vung.Cells(i,j) nghĩa là lấy hàng i cột j ở trong vùng đó. Và code sẽ quét cột trước hàng sau rồi xếp vào 1 cột mới.
Thân.
 
Cảm ơn các bạn , nhưng đó là 1 ô .
Ở đây mình muốn 1 VÙNG kia mà
Nếu 1 vùng thì sẽ có 1 vùng, bằng cách bạn thử đoạn mã sau:

PHP:
 Range("B2:C9").Select
 MsgBox Selection.Offset(0 , 1).Address

Sau một hồi suy ngẫn kết quả từ hộp thoại kết xuất, bạn thử thay dần các số khác vô chổ số 0 & số 1 trong mệnh đề Offsẻt(i, j) xem sau ( Kể cả số âm, nhưng là số âm lớn, VD:= -1)

:-=}}}}})(&&@@
 
Ví dụ thế này:
Con trỏ đang ở A1 , vùng chọn là B1:T1
Di chuyển đến A2 , vùng chọn là B2:T2

Di chuyển đến Ai , vùng chọn là Bi:Ti
Thì làm sao
 
Ý bạn giống như vầy! Phải không?
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then
Range("B" & Target.Row & ":T" & Target.Row).Select
End If
End Sub
Thân.
 

File đính kèm

PHP:
For i = 1 To 5
      Cells(i, 1).Select
      ActiveCell.Range("B1:T1") = i
      MsgBox "Ghi"
      ActiveCell.Range("B1:T1").ClearContents
      MsgBox "Xoa"
  Next i
 
Mình chưa hiểu hàm Offset phục vụ cho mục đích gì, mong bạn nào biết chỉ dùm với?
 
Hàm Offset trong VBA dùng để giời vị trí chọn từ 1 cell gốc đi.
Cấu trúc của hàm Offset là Offset(hàng, cột)

Ví dụ:
Nếu Cell gốc tại A1 và ta muốn chọn ở ô B3 thì ta viết như sau:
Range("A1").Offset(2,1)
Nếu Cell gốc tại A1 và ta muốn chọn ở ô D1 thì ta viết như sau:
Range("A1").Offset(,3)
Nếu Cell gốc tại A1 và ta muốn chọn ở ô A10 thì ta viết như sau:
Range("A1").Offset(9)
Thân.
 
Lần chỉnh sửa cuối:
Mình thấy cần chính xác hóa vấn đề về OFFSET()

Hàm Offset trong VBA dùng để giời vị trí chọn từ 1 cell gốc đi.
Cấu trúc của hàm Offset là Offset(hàng, cột)
. . . .
Thân.

Đó là ta không thể hiểu hay diễn dịch qua tiếng Việt đây là 1 hàm, mà là 'Thuộc tính'; Sau đây là phần giúp đỡ của VBE một khi ta nhập từ 'OFFSET' trong cửa sổ này & nhấn {F1}:

Offset Property

See Also . . . Applies To . . . . Example


Returns a Range object that represents a range that’s offset from the specified range. Read-only.

expression.Offset(RowOffset, ColumnOffset)
expression Required. An expression that returns a Range object.

RowOffset Optional Variant. The number of rows (positive, negative, or 0 (zero)) by which the range is to be offset. Positive values are offset downward, and negative values are offset upward. The default value is 0.

ColumnOffset Optional Variant. The number of columns (positive, negative, or 0 (zero)) by which the range is to be offset. Positive values are offset to the right, and negative values are offset to the left. The default value is 0.

Offset property as it applies to the TickLabels object.

Returns or sets the distance between the levels of labels, and the distance between the first level and the axis line. The default distance is 100 percent, which represents the default spacing between the axis labels and the axis line. The value can be an integer percentage from 0 through 1000, relative to the axis label’s font size. Read/write Long.

expression.Offset
expression Required. An expression that returns a TickLabels object.

Example
As it applies to the Range object.

This example activates the cell three columns to the right of and three rows down from the active cell on Sheet1.

PHP:
Worksheets("Sheet1").Activate
ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate
This example assumes that Sheet1 contains a table that has a header row. The example selects the table, without selecting the header row. The active cell must be somewhere in the table before the example is run.

PHP:
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1,  tbl.Columns.Count).Select
 
Web KT

Bài viết mới nhất

Back
Top Bottom