hungtttv
Thành viên mới
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 6/2/10
- Bài viết
- 22
- Được thích
- 13
Nếu như mình muốn diễn đạt :không có giá trị nào của A=B thì viết thế nào bác?Cái nào nghĩ không ra thì cứ IF... IF... gì gì đó (như ta nói) cũng sẽ ra thôi
Nếu như mình muốn diễn đạt :không có giá trị nào của A=B thì viết thế nào bác?Cái nào nghĩ không ra thì cứ IF... IF... gì gì đó (như ta nói) cũng sẽ ra thôi
Mình suy nghĩ thế này, không biết có đúng không.Nếu như mình muốn diễn đạt :không có giá trị nào của A=B thì viết thế nào bác?
Em làm sub xóa hàng thì ok nhưng cứ xóa cột là các dữ liệu bên ngoài bên phải của vùng chọn lại bị mất hết. Với xóa cột thì em dùng delete 1 theo như bác ndu. Em thử bằng shift cell left của excel thì dữ liệu bên phải ngoài vùng không bị mất. Vì sao vậy?Theo cách hiểu của Mình là: Bạn bấm chọn 1 ô bất kỳ -> Bấm phải chuột chọn Delete -> Nó sẽ xuất hiện hộp thoại Delete -> Xem thứ tự từ trên xuống
Delete Shist Cells Left (Tương ứng là 1)
Delete Shist Cells Up (Tương ứng là 2)
.......
Giờ hãy xem lại hàm của bạn nha! Trong code của bạn có đoạn:Nếu như mình muốn diễn đạt :không có giá trị nào của A=B thì viết thế nào bác?
Function TachSo(ByVal x1 As String) As Integer
Dim p1 As Long
Dim p2 As Long
For i = 1 To Len(x1)
If IsNumeric(Mid(x1, i, 1)) = True Then
p1 = i
Exit For
End If
Next
If p1 > 0 Then
For i = p1 To Len(x1)
If IsNumeric(Mid(x1, i, 1)) = False Then
p2 = i
Exit For
End If
Next
End If
TachSo = CInt(Mid(x1, p1, p2 - p1))
End Function
Ủa! Hàm này để làm gì vậy ta?Đề bài (bài 1): Viết hàm tìm số nguyên trong 1 chuỗi
Bài làm:
Mã:Function TachSo(ByVal x1 As String) As Integer Dim p1 As Long Dim p2 As Long For i = 1 To Len(x1) If IsNumeric(Mid(x1, i, 1)) = True Then p1 = i Exit For End If Next If p1 > 0 Then For i = p1 To Len(x1) If IsNumeric(Mid(x1, i, 1)) = False Then p2 = i Exit For End If Next End If TachSo = CInt(Mid(x1, p1, p2 - p1)) End Function
Function Ten(ByVal y1 As String) As String
Dim x1 As Integer
For i = Len(y1) To 1 Step -1
If Mid(y1, i, 1) = " " Then
x1 = i
Exit For
End If
Next i
Ten = Right(y1, Len(y1) - x1)
End Function
Function Ho(ByVal y2 As String) As String
Dim x2 As Integer
For i = Len(y2) To 1 Step -1
If Mid(y2, i, 1) = " " Then
x2 = i
Exit For
End If
Next i
Ho = IIf(x2 > 0, Left(y2, x2 - 1), "")
End Function
Ho = IIf(x2 > 0, Left(y2, x2 - 1), "")
If x2 > 0 Then Ho = Left(y2, x2 - 1)
If x2 > 0 Then Ho = Left(y2, x2 - 1)
Tuy nhiên hàm tách họ của em chưa hoàn thiện, nếu tên chỉ gồm một âm tiết (chẳng hạn như "Thắng" hay "Ngọc" thì nó báo lỗi.
Thưa thầy vì trình độ của chúng em, nên giới hạn là chỉ cần tìm được 1 số nguyên đầu tiên là được. Số 42 trong ví dụ của thầy là số nguyên đầu tiên trong chuỗi
Để tìm tiếp các số em cũng sẽ làm được bằng cách thêm vào các đoạn vòng lặp, nhưng kiểu gì nó cũng là một số giới hạn (vd 4 số, hoặc 5 số nếu thêm 5 vòng lặp). Còn để tìm một cách vô hạn thì em chưa nghĩ ra làm kiểu gì? Để tìm một số có số lẻ sau số thập phân, hay tìm 1 số có định dạng kiểu 1.000.000 trong chuỗi cũng ngoài khả năng.
Function Ten2(ByVal y3 As String) As String
Ten2 = Right(y3, Len(y3) - InStrRev(y3, " ", -1, vbTextCompare) + 1)
End Function
Thưa thầy, bài tách họ tên em nghĩ ra 1 cách rất ngắn ứng dụng hàm đã học, nhưng khi chạy nó báo lỗi #REF, em chưa tìm ra được sai ở đâu? Đây là code tách tên
Mã:Function Ten2(ByVal y3 As String) As String Ten2 = Right(y3, Len(y3) - InStrRev(y3, " ", -1, vbTextCompare) + 1) End Function
Public Function Ten2(ByVal Chuoi As String) As String
Myr = Trim(Chuoi)
Ten2 = Right(Myr, Len(Myr) - InStrRev(Myr, " "))
End Function
Public Function Tachho(ByVal Chuoi As String) As String
Dim Myr
Myr = InStr(1, Chuoi, " ")
Ten = Left(Chuoi, Myr)
End Function
Cái này nó vẫn báo lỗi #REFAnh Thắng thử xem cài này nhé! Em sửa lại chút thôi:
PHP:Public Function Ten2(ByVal Chuoi As String) As String Myr = Trim(Chuoi) Ten2 = Right(Myr, Len(Myr) - InStrRev(Myr, " ")) End Function
Có lỗi gì đâu trời... Kế cả hàm của bạn cũng chạy tốt luônCái này nó vẫn báo lỗi #REF
Option Explicit
Function TachTen(ByVal HVT As String) As String
Dim Space As String
Space = InStrRev(Trim(HVT), " ", -1, vbTextCompare)
TachTen = Mid(HVT, Space + 1, Len(Trim(HVT)))
End Function
-----------------------------------------------------------
Function TachHo(ByVal HVT As String) As String
Dim Space As String
Space = InStrRev(HVT, " ", -1, vbTextCompare)
TachHo = Mid(HVT, 1, Space)
End Function
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2