Hướng dẫn excel vba remove first word from string - excel vba xóa từ đầu tiên khỏi chuỗi


Xem phiên bản đầy đủ: Đã giải quyết: Xóa từ đầu tiên trong chuỗi



markmrw

11-10-2009, 06:23 sáng

Hiya Ladies and Gents

Tôi cần tìm một cách để loại bỏ từ đầu tiên khỏi một chuỗi. Sử dụng VBA làm phạm vi không phải lúc nào cũng giống nhau. (vì vậy tôi không thể sử dụng công thức bảng tính)
using VBA as the range is not always the same. (so i can't use a worksheet formula)

Các chuỗi không phải lúc nào cũng có cùng chiều dài, tức là.
i.e.

Chiều dài WHP 111 Chiều cao Whp 222 Độ sâu WHP 333
Height WHP 222
Depth WHP 333

Từ đầu tiên có thể được cắt giảm, tôi không phải giữ từ đầu tiên để nó có thể bị xóa. Tôi đã thử sử dụng bên trái (nhưng tôi hơi dày) :)
i have tried using Left (But im a bit thick) :)

Mọi sự trợ giúp sẽ rất được trân trọng

Đánh dấu


mdmackillop

11-10-2009, 06:48 sáng

Sub delleft () dim l dài, d dài l = len (lựa chọn) d = orch (1, lựa chọn, "") ) Kết thúc phụ
Dim l as long, d as long
l = Len(Selection)
d = InStr(1, Selection, " ")
If Not d = 0 Then Selection.Offset(, 1) = Right(Selection, l - d)
End Sub


Bob Phillips

11-10-2009, 07:18 sáng

Hiya Ladies and Gents

Tôi cần tìm một cách để loại bỏ từ đầu tiên khỏi một chuỗi. Sử dụng VBA làm phạm vi không phải lúc nào cũng giống nhau. (vì vậy tôi không thể sử dụng công thức bảng tính)
using VBA as the range is not always the same. (so i can't use a worksheet formula)

Các chuỗi không phải lúc nào cũng có cùng chiều dài, tức là.

Chiều dài WHP 111 Chiều cao Whp 222 Độ sâu WHP 333


markmrw

Từ đầu tiên có thể được cắt giảm, tôi không phải giữ từ đầu tiên để nó có thể bị xóa. Tôi đã thử sử dụng bên trái (nhưng tôi hơi dày) :)

Mọi sự trợ giúp sẽ rất được trân trọng

Đánh dấu
what is As Long?


mdmackillop

11-10-2009, 06:48 sáng

Sub delleft () dim l dài, d dài l = len (lựa chọn) d = orch (1, lựa chọn, "") ) Kết thúc phụ

Bob Phillips
Using Data Types Efficiently

11-10-2009, 07:18 sáng

Có bạn có thể,

= Mid (a1, find ("", a1) +1,255)

11-10-2009, 07:35 sáng
You write data directly to random-access files.In addition to Variant, supported data types include Byte, Boolean, Integer, Long, Single, Double, Currency, Decimal, Date, Object, and String. Use the Dim statement to declare a variable of a specific type, for example:


markmrw

Hoàn hảo cảm ơn bạn MD

Như một vấn đề quan tâm là gì lâu như vậy?

11-10-2009, 08:04 AM


markmrw

Hoàn hảo cảm ơn bạn MD

Như một vấn đề quan tâm là gì lâu như vậy?


mdmackillop

11-10-2009, 06:48 sáng

Sub delleft () dim l dài, d dài l = len (lựa chọn) d = orch (1, lựa chọn, "") ) Kết thúc phụ


markmrw

Bob Phillips

11-10-2009, 07:18 sáng

Có bạn có thể,


Bob Phillips

11-10-2009, 07:18 sáng

Có bạn có thể,


diego80

= Mid (a1, find ("", a1) +1,255)

Sub delleft () dim l dài, d dài l = len (lựa chọn) d = orch (1, lựa chọn, "") ) Kết thúc phụ
Dim l as long, d as long
l = Len(Selection)
d = InStr(1, Selection, " ")
If Not d = 0 Then Selection.Offset(, 1) = Right(Selection, l - d)
End Sub

Bob Phillips

11-10-2009, 07:18 sáng

Có bạn có thể,

= Mid (a1, find ("", a1) +1,255)

11-10-2009, 07:35 sáng

Hoàn hảo cảm ơn bạn MD
could it be possible to request a custom edit so that the output is overwritten within the same cells? :)

Như một vấn đề quan tâm là gì lâu như vậy?

11-10-2009, 08:04 AM


mdmackillop

11-10-2009, 06:48 sáng

Sub delleft () dim l dài, d dài l = len (lựa chọn) d = orch (1, lựa chọn, "") ) Kết thúc phụ
Dim l As Long, d As Long
Dim Cel As Range
For Each Cel In Selection
l = Len(Cel)
d = InStr(1, Cel, " ")
'If Not d = 0 Then cel.Offset(, 1).Value = Right(cel, l - d)
'or
If Not d = 0 Then Cel.Value = Right(Cel, l - d)
Next Cel
End Sub


diego80

Bob Phillips

11-10-2009, 07:18 sáng


diego80

Có bạn có thể,

= Mid (a1, find ("", a1) +1,255)

11-10-2009, 07:35 sáng

Hoàn hảo cảm ơn bạn MD


Như một vấn đề quan tâm là gì lâu như vậy?

  • #2

Có bao nhiêu dấu gạch ngang có thể xuất hiện?

  • #3

Này dân gian! Tôi muốn xóa từ đầu tiên của chuỗi văn bản và xóa tất cả các văn bản phía sau dấu gạch ngang cuối cùng ...

Tôi có hơn 2000 mục nhập dữ liệu và mỗi mục trong số chúng là khác nhau - nhưng trong mỗi hàng tôi muốn xóa từ đầu tiên và xóa tất cả các từ sau dấu gạch ngang cuối cùng. Đây là một ví dụ:

Dữ liệu gốc: Gửi ABC Accrual - Asadakdslksaa Gửi DEF- THÁNG 10
Submit ABC Accrual - Asadakdslksaa
Submit DEF- October Savings - Bsaasd
Submit Q2 STA - Dddsasda

Tôi muốn "làm sạch" dữ liệu sao cho nó hiển thị như:

ABC Accural def- Tiết kiệm tháng 10 Q2 STA
DEF- October Savings
Q2 STA

*Lưu ý rằng tôi vẫn muốn giữ dấu gạch ngang đầu tiên trên mục nhập dữ liệu thứ hai, tôi chỉ cần xóa mọi thứ sau dấu gạch ngang cuối cùng.

Vài câu hỏi...

1) Từ đầu tiên luôn luôn "gửi"?always "Submit"?

2) Dấu gạch ngang cuối cùng luôn có một khoảng trống ở hai bên của nó?always have a space on either side of it?

3) Có bất kỳ dấu gạch ngang nào khác luôn không có không gian ở hai bên (như bạn hiển thị trong ví dụ của mình) không?always not have a space on either side (like you show in your example)?

4) Bạn đang tìm kiếm một công thức VBA, Excel hoặc thủ tục thủ công để thực hiện điều này?

  • #4

Trên thực tế, chức năng này sẽ giúp bạn. Nó không phải của tôi (cảm ơn chip!), Nhưng nó hoạt động. Sử dụng nó để tìm kiếm ngược cho dấu gạch ngang ở phía bên phải của chuỗi của bạn. Sau đó, bạn có thể sử dụng = trái để tạo một chuỗi mới. Sau đó, một tìm kiếm bình thường cho một dấu gạch ngang trong chuỗi đó và tất cả các bạn đã được thiết lập.

Xin lỗi vì đã rất ngắn gọn - tôi đã trở lại làm việc! Nhưng thử thách là tốt, phải không?

Chức năng repninstr (byval thistring as string, byval thechar as string, _ byval startat as integer) như số nguyên
ByVal StartAt As Integer) As Integer

Dim ndx như số nguyên mờ l như số nguyên l = len (TheChar) nếu startat len ​​(thistring) sau đó thoát ra chức năng kết thúc nếu
Dim L As Integer
L = Len(TheChar)
If StartAt <= 0 Then
StartAt = Len(TheString)
End If
If StartAt > Len(TheString) Then
Exit Function
End If

Cho ndx = startat đến 1 bước -1 nếu mid (thestring, ndx, l) = TheChar sau đó revinStr = ndx thoát chức năng kết thúc nếu NDX tiếp theo
If Mid(TheString, Ndx, L) = TheChar Then
RevInStr = Ndx
Exit Function
End If
Next Ndx

Hàm cuối

Trong đó Thestring là chuỗi bạn muốn tìm kiếm, TheChar là ký tự hoặc chuỗi các ký tự bạn muốn tìm kiếm và Startat là vị trí ký tự trong việc bạn muốn bắt đầu tìm kiếm tại (hoặc
character or string of characters you want to search for, and StartAt is the
character position in TheString you want to start the search at (or <= 0 to
start at the end).

RevinStr ("ABCDEFG", "def", 0)

Trả về 4, bởi vì "def" bắt đầu ở vị trí ký tự thứ 4 trong "ABCDEFG".

- Thường trực, Chip Pearson Microsoft MVP - Dịch vụ tư vấn phần mềm Excel Pearson
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting Services

Excel, tìm kiếm chuỗi ngược?

  • #5

Hi,

Tôi không nghĩ rằng bạn cần tạo một chức năng tùy chỉnh để tìm kiếm ngược (PROTREV làm điều đó) trừ khi bạn đang chạy phiên bản Excel thực sự cũ (
A UDF alternative might be something like this:

Các hướng dẫn nhanh để thiết lập và sử dụng chức năng do người dùng này xác định là:

  • Nhấn Alt+F11 để mở Vbeditor
  • Chọn Chèn> Mô -đun
  • Dán mã trên trong không gian trắng trên bảng điều khiển bên phải
  • Đóng trình soạn thảo và quay lại trong bảng tính sử dụng chức năng như bất kỳ chức năng bảng tính nào khác. Ví dụ. Nếu chuỗi của bạn nằm trong cột A, thì trong cột B Loại: = Subring (A1) và kéo xuống theo yêu cầu
    =SubString(A1)
    and drag down as far as required

Đã chỉnh sửa lần cuối: ngày 4 tháng 6 năm 2013

  • #6

Tôi không nghĩ rằng bạn cần tạo một chức năng tùy chỉnh trừ khi bạn đang chạy phiên bản Excel thực sự cũ (
A UDF alternative might be something like this:

Mã số:

Function SubString(src As String)

    src = Mid(src, InStr(src, " ") + 1)
    SubString = Left(src, Len(src) - InStrRev("-", src))

End Function

Hoặc thậm chí điều này ...

Mã số:

Function SpaceToDash(S As String) As String
  SpaceToDash = Trim(Mid(Left(S, InStrRev(S, "-") - 1), InStr(S, " ") + 1))
End Function

  • #7

Xin lỗi, tôi đã có một sai lầm trong tôi trước đó. Nó nên đọc một cái gì đó như:

Mã số:

Function SubString(src As String)

    src = Mid(src, InStr(src, " ") + 1)
    SubString = Left(src, InStrRev(src, "-") - 1)

End Function

Nhưng dù sao, Rick Rothstein đã làm điều đó tốt hơn nhiều.

  • #số 8

Vài câu hỏi...

1) Từ đầu tiên luôn luôn "gửi"?always "Submit"?

2) Dấu gạch ngang cuối cùng luôn có một khoảng trống ở hai bên của nó?always have a space on either side of it?

3) Có bất kỳ dấu gạch ngang nào khác luôn không có không gian ở hai bên (như bạn hiển thị trong ví dụ của mình) không?always not have a space on either side (like you show in your example)?

4) Bạn đang tìm kiếm một công thức VBA, Excel hoặc thủ tục thủ công để thực hiện điều này?

1) Có 2) Có, nó 3) Xin lỗi tôi đã phạm sai lầm ở đó- tất cả các dấu gạch ngang luôn có một khoảng trống ở hai bên. 4) Làm thế nào tôi nên làm điều đó thông qua VBA (tôi hoàn toàn mới với VBA)? Làm thế nào để tôi làm điều đó bằng tay?
2) Yes, it does
3) Sorry I've made a mistake there- ALL THE DASHES ALWAYS HAVE A SPACE ON EITHER SIDE.
4) How should I do it through VBA (I am completely new to VBA)? How do I do it manually?

Cảm ơn sự giúp đỡ của bạn

Eunice

  • #9

Cảm ơn bạn đã giúp đỡ! Đó là một câu trả lời thực sự chi tiết - tôi mới đến VBA vì vậy cảm ơn vì đã làm việc cho tôi thông qua nó

  • #10

Cảm ơn rất nhiều! Chúc may mắn với công việc của bạn - đó là một câu trả lời rất chi tiết!

Xin chào,

Tôi không nghĩ rằng bạn cần tạo một chức năng tùy chỉnh để tìm kiếm ngược (PROTREV làm điều đó) trừ khi bạn đang chạy phiên bản Excel thực sự cũ (
A UDF alternative might be something like this:

Các hướng dẫn nhanh để thiết lập và sử dụng chức năng do người dùng này xác định là:

  • Nhấn Alt+F11 để mở Vbeditor
  • Chọn Chèn> Mô -đun
  • Dán mã trên trong không gian trắng trên bảng điều khiển bên phải
  • Đóng trình soạn thảo và quay lại trong bảng tính sử dụng chức năng như bất kỳ chức năng bảng tính nào khác. Ví dụ. Nếu chuỗi của bạn nằm trong cột A, thì trong cột B Loại: = Subring (A1) và kéo xuống theo yêu cầu
    =SubString(A1)
    and drag down as far as required

Làm cách nào để loại bỏ từ đầu tiên khỏi chuỗi trong excel?

Để xóa ký tự đầu tiên khỏi chuỗi, bạn có thể sử dụng hàm thay thế hoặc kết hợp các hàm phải và LEN. Ở đây, chúng tôi chỉ cần lấy 1 ký tự từ vị trí đầu tiên và thay thế nó bằng một chuỗi trống ("").use either the REPLACE function or a combination of RIGHT and LEN functions. Here, we simply take 1 character from the first position and replace it with an empty string ("").

Làm cách nào để xóa một từ khỏi chuỗi trong VBA?

Chúng ta có thể sử dụng chức năng trang trí để loại bỏ các không gian dẫn đầu và dấu vết. Trong ví dụ dưới đây, chúng tôi có một chuỗi đầu vào "Đây là dữ liệu của tôi" (dòng 5). Hàm trang trí được sử dụng trong dòng 6. Macro tạo ra một hộp thông báo để hiển thị so sánh đầu vào và đầu ra.use the Trim function to remove leading and trailing spaces. In the example below we have an input string of " This is my data " (line 5). The Trim function is used in line 6. The macro produces a message box to show a comparison of the input and output.

Làm cách nào để xóa tất cả văn bản khỏi từ đầu tiên trong ô?

Xóa văn bản trước, sau hoặc giữa 2 ký tự với Find & Street..
Chọn tất cả các ô nơi bạn muốn xóa văn bản ..
Nhấn Ctrl + H để mở hộp thoại Tìm và thay thế ..
Trong hộp tìm kiếm, nhập một trong các kết hợp sau: ....
Để lại hộp thay thế ..
Nhấp vào Thay thế tất cả ..

Làm thế nào để bạn loại bỏ ký tự đầu tiên và cuối cùng của một chuỗi trong VBA?

Ví dụ: Trong A1: Xin chào!Trong b1: = trái (a1, len (a1) -1), kết quả là xin chào ...
Sub Removerightleft ().
Dim str như chuỗi ..
str = "xin chào".
'Loại bỏ ký tự khỏi trái ..
str = right (tmp, len (tmp) - 1).
'Loại bỏ ký tự từ phải ..
str = trái (TMP, LEN (TMP) - 1).
'str có 1 ký tự bị xóa từ cả bên phải và bên trái ..