Lấy số ngẫu nhiên trong khi dữ liệu là text

Liên hệ QC

chisinhvnn

Thành viên tiêu biểu
Tham gia
7/3/08
Bài viết
478
Được thích
103
Nhờ các nhanh chị xem giúp code sai chổ nào mà không lấy được được kết quả. Nếu dữ liệu là text thì cho lấy số ngẫu nhiên, còn không lấy số chính nó.
 

File đính kèm

  • test.xlsm
    15.7 KB · Đọc: 6
Nhờ các nhanh chị xem giúp code sai chổ nào mà không lấy được được kết quả. Nếu dữ liệu là text thì cho lấy số ngẫu nhiên, còn không lấy số chính nó.
Bạn thêm câu lệnh này nữa.Thì ra kết quả nhưng không biết đúng ý bạn không.
ReDim arr(1 To r, 1 To c)
Mã:
Sub Chonvung()
Dim vung As Range, i As Long, j As Long, arr, ketqua As Range

On Error Resume Next
Set vung = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8)
If (vung Is Nothing) = False Then
    r = vung.Rows.Count: c = vung.Columns.Count
    ReDim arr(1 To r, 1 To c)
    For i = 1 To r
        For j = 1 To c
            If IsNumeric(vung(i, j)) = False Then
                arr(i, j) = 1 + 8 * Rnd() \ 1
                'arr(i, j) = Application.WorksheetFunction.RandBetween(10, 20)
                Else
                arr(i, j) = vung(i, j)
            End If
        Next j
    Next i
End If
Sheet1.Range("F1").Resize(r, c) = arr
End Sub
 
Upvote 0
Nhờ các nhanh chị xem giúp code sai chổ nào mà không lấy được được kết quả. Nếu dữ liệu là text thì cho lấy số ngẫu nhiên, còn không lấy số chính nó.
Trước câu lệnh For i = 1 To r thêm dòng này vào.
Mã:
ReDim arr(1 To r, 1 To c)
 
Upvote 0
Bạn thêm câu lệnh này nữa.Thì ra kết quả nhưng không biết đúng ý bạn không.
ReDim arr(1 To r, 1 To c)
Mã:
Sub Chonvung()
Dim vung As Range, i As Long, j As Long, arr, ketqua As Range

On Error Resume Next
Set vung = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8)
If (vung Is Nothing) = False Then
    r = vung.Rows.Count: c = vung.Columns.Count
    ReDim arr(1 To r, 1 To c)
    For i = 1 To r
        For j = 1 To c
            If IsNumeric(vung(i, j)) = False Then
                arr(i, j) = 1 + 8 * Rnd() \ 1
                'arr(i, j) = Application.WorksheetFunction.RandBetween(10, 20)
                Else
                arr(i, j) = vung(i, j)
            End If
        Next j
    Next i
End If
Sheet1.Range("F1").Resize(r, c) = arr
End Sub
Trước câu lệnh For i = 1 To r thêm dòng này vào.
Mã:
ReDim arr(1 To r, 1 To c)
cảm ơn bạn. Nếu kết quả mình cần trả về tại vị trí mình chọn thì xử lý như thế nào nhỉ. Mình chưa nghỉ ra cách làm
Bài đã được tự động gộp:
 
Upvote 0
cảm ơn bạn. Nếu kết quả mình cần trả về tại vị trí mình chọn thì xử lý như thế nào nhỉ. Mình chưa nghỉ ra cách làm
Bài đã được tự động gộp:
Thay dòng này Sheet1.Range("F1").Resize(r, c) = arr thành.
Mã:
ActiveCell.Resize(r, c) = arr
 
Upvote 0
Web KT
Back
Top Bottom