Giúp: Tạo Hyperlink (1 người xem)

Liên hệ QC

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

timhieu02

Thành viên hoạt động
Tham gia
30/9/09
Bài viết
114
Được thích
7
Giới tính
Nam
Chào các anh/chị/bạn,

cho mình xin lỗi nếu post sai mục.
Mình có vấn đề tạo hyperlink, cần anh/chị/bạn giúp. Mình có attached file mẫu và có ghi yêu cầu trong file.

Mong tin hồi âm sớm từ anh/chị/bạn :)

Trân trọng
 

File đính kèm

các anh/chị/bạn ơi, có ai nhín chút time giúp mình với..do cũng đang cần gắp ngày mai nên mong các pác giúp với :)
 
Upvote 0
các anh/chị/bạn ơi, yêu cầu mình note trong file có cần làm rõ thêm yếu tố nào thí các pác báo mình nhé. :) Mong các pác xem và giúp mình sớm nhé :)

Chúc 1 ngày làm việc vui vẽ
 
Upvote 0
Có anh/chị nào giúp mình với :)
 
Upvote 0
Vấn đề của bạn chỉ là hyperlink thôi, mình cần file gốc có các tên sheet đầy đủ, bạn lấy file gốc xóa bớt dữ liệu lại, rồi gửi lên đây làm một lần cho gọn luôn

 
Upvote 0
dạ. thanks anh. em dùng file gốc và đã xóa bớt data trong file temp_output ở trên. trong file em có 5 tables rồi ạ
 
Upvote 0
Mình tạo cho bạn 2 nút để check, vấn đề mình không hiểu khi lọc được giá trị ở ô [A1] ra thì nó sẽ link như thế nào,có nut "back to Index" thì làm ok rồi, mình viết code tìm được giá trị ở ô [A1] như bạn yêu cầu vui lòng xem code và giải thích xử lí chuỗi tìm được rõ hơn thì mình sẽ giúp cho
Mã:
Dim i As Long, Leng As Long, rEnd As Long, m As Long
Dim Ktu As String, Gtri As String
On Error Resume Next
rEnd = [b100000].End(xlUp).Row
Leng = Len([a1])
If Leng > 6 Then
    For i = 1 To Leng
        Ktu = Right(Left([a1], i), 1)
        If Ktu = ":" Then
            m = i + 1
            Exit For
        End If
    Next i
    If m > 0 Then
        Gtri = Left(Right([a1], Leng - m), Leng - m - 5)
        For i = 8 To rEnd
            If Cells(i, 1).Value = Gtri Then
                Cells(i, 1).Select
                Exit Sub
            End If
        Next i
    End If
End If
 

File đính kèm

Upvote 0
Dạ. thanks anh. yêu cầu chính của dự án này là:

- Ban đầu chỉ có sheet "Table"
- Sau đó chạy macro (hoặc tạo add-in), sẽ tự tạo sheet "Index" và lấy data tương tứng tiêu để và base như template
[TABLE="width: 446"]
[TR]
[TD="colspan: 3"]#TABLE INDEX#[/TD]
[/TR]
[TR]
[TD]Table No[/TD]
[TD]Table Title[/TD]
[TD]Base[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]X3: ques1[/TD]
[TD]232[/TD]
[/TR]
[TR]
[TD]2[/TD]
[TD]X4: Ques Temp 1[/TD]
[TD]150[/TD]
[/TR]
[TR]
[TD]3[/TD]
[TD]X5: Ques Temp 5[/TD]
[TD]200[/TD]
[/TR]
[TR]
[TD]4[/TD]
[TD]Ques Total[/TD]
[TD]215[/TD]
[/TR]
[/TABLE]

- Sau đó click vào hyperlink sẽ link tới table tương ứng
- Và dưới mỗi table tương ứng sẽ có hyperlink "Back To Index" để về sheet "Index"

[TABLE="width: 454"]
[TR]
[TD]X3 : X3: ques1<BR/>[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]Project Test[/TD]
[TD="align: right"]123[/TD]
[/TR]
[TR]
[TD]Table: 574<BR/>Level: Top[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]Back to Index[/TD]
[TD]CLASSIFY RESPONDENTS[/TD]
[/TR]
[TR]
[TD][/TD]
[TD]Total[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: right"][/TD]
[/TR]
[/TABLE]

Mong các anh/chị chỉ giáo thêm :)
 
Lần chỉnh sửa cuối:
Upvote 0
bạn qua sheet index bấm nút hyperlink coi đúng chưa, nếu chưa thì tối về sửa sau, h mình đi làm rồi
 

File đính kèm

Upvote 0
Dạ. gần đúng rồi ạ.
nhưng cần chỉnh lại cho đẹp như sau, vì khi chạy button "Hyperlink" trong sheet "Index", title không hiện lên được tương ứng title từng table sheet "Table".
[TABLE="width: 446"]
[TR]
[TD="colspan: 3"]
#TABLE INDEX#[/TD]
[/TR]
[TR]
[TD]Table No[/TD]
[TD]Table Title[/TD]
[TD]Base[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]#TABLE INDEX#[/TD]
[TD]232[/TD]
[/TR]
[TR]
[TD]2[/TD]
[TD]Table!A41[/TD]
[TD]232[/TD]
[/TR]
[TR]
[TD]3[/TD]
[TD]Table!A99[/TD]
[TD]200[/TD]
[/TR]
[TR]
[TD]4[/TD]
[TD]Table!A147[/TD]
[TD]215[/TD]
[/TR]
[/TABLE]

-> phải như vầy thì hay quá:

[TABLE="width: 446"]
[TR]
[TD="colspan: 3"]#TABLE INDEX#[/TD]
[/TR]
[TR]
[TD]Table No[/TD]
[TD]Table Title[/TD]
[TD]Base[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD] X3: ques1[/TD]
[TD]232[/TD]
[/TR]
[TR]
[TD]2[/TD]
[TD]X4: Ques Temp 1[/TD]
[TD]150[/TD]
[/TR]
[TR]
[TD]3[/TD]
[TD]X5: Ques Temp 5[/TD]
[TD]200[/TD]
[/TR]
[TR]
[TD]4[/TD]
[TD]Ques Total[/TD]
[TD]215[/TD]
[/TR]
[/TABLE]

Và thay vì button "Back to Index" trên đầu sheet "Table" thì có thể chỉnh lại thành text "Back To Index" dưới mỗi table
Vì dụ: text "Back To Index" ở ô A4, A44, A102, A105

Cám ơn anh và mọi người vì đã dành thời gian giúp mình nhé :)
 
Upvote 0
Tôi dùng công thức tự động cập nhật hyperlink, lấy số Base giúp bạn. Với điều kiện bạn luôn nhập liệu theo format bạn đã cung cấp


Row X1: Tên Title
Row X2: Text
Row X3: Bắt đầu với keyword "Table:"
Back to Index >> Phần này là hằng số nên tôi bỏ công thức vô ô đó, sau này bạn copy paste vô chổ mới là được.


Tham khảo từ 1 bài post của bác Ba Tê:
http://www.giaiphapexcel.com/forum/showthread.php?110402-giúp-em-lọc-tên-sản-phẩm/page2
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dạ. cảm ơn anh. thật ra em muốn có macro/add-in để em và đồng nghiệp add vào và sử dụng cho nhiều dự án với format y như vậy sau này luôn :)
Vì orginal output của em chỉ đơn thuần là raw data, chưa có text: "Back To Index" dưới mỗi table.
Attached là original output của em
 
Lần chỉnh sửa cuối:
Upvote 0
- phần macro chắc các bạn khác đã giải quyết rồi :) phần tôi chỉ add thêm 1 cách làm khác dùng công thức thôi
- phần công thức bạn cứ nắm cell drag xuống thì nó sẽ cập nhật nếu sau này bạn thêm table :)
- xin nhường phần macro lại cho các chiến hữu khác nhé :)
 
Upvote 0
dạ. cám ơn anh đã dành thời gian cho topic này ạ :)
 
Upvote 0
Dạ. gần đúng rồi ạ.
nhưng cần chỉnh lại cho đẹp như sau, vì khi chạy button "Hyperlink" trong sheet "Index", title không hiện lên được tương ứng title từng table sheet "Table".
[TABLE="width: 446"]
[TR]
[TD="colspan: 3"]#TABLE INDEX#[/TD]
[/TR]
[TR]
[TD]Table No[/TD]
[TD]Table Title[/TD]
[TD]Base[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]#TABLE INDEX#[/TD]
[TD]232[/TD]
[/TR]
[TR]
[TD]2[/TD]
[TD]Table!A41[/TD]
[TD]232[/TD]
[/TR]
[TR]
[TD]3[/TD]
[TD]Table!A99[/TD]
[TD]200[/TD]
[/TR]
[TR]
[TD]4[/TD]
[TD]Table!A147[/TD]
[TD]215[/TD]
[/TR]
[/TABLE]

-> phải như vầy thì hay quá:

[TABLE="width: 446"]
[TR]
[TD="colspan: 3"]#TABLE INDEX#[/TD]
[/TR]
[TR]
[TD]Table No[/TD]
[TD]Table Title[/TD]
[TD]Base[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD] X3: ques1[/TD]
[TD]232[/TD]
[/TR]
[TR]
[TD]2[/TD]
[TD]X4: Ques Temp 1[/TD]
[TD]150[/TD]
[/TR]
[TR]
[TD]3[/TD]
[TD]X5: Ques Temp 5[/TD]
[TD]200[/TD]
[/TR]
[TR]
[TD]4[/TD]
[TD]Ques Total[/TD]
[TD]215[/TD]
[/TR]
[/TABLE]

Và thay vì button "Back to Index" trên đầu sheet "Table" thì có thể chỉnh lại thành text "Back To Index" dưới mỗi table
Vì dụ: text "Back To Index" ở ô A4, A44, A102, A105

Cám ơn anh và mọi người vì đã dành thời gian giúp mình nhé :)
tại mình làm gấp quá để tranh thủ đi làm, mình text trên máy của mình thì không thấy bị lỗi, còn phần "Back to Index" thì nó cũng giống tương tự như thằng hyperlink thôi, nếu bạn đợi được tới ngày mai mình mới gửi file update lên cho bạn nha!
 
Upvote 0
Mình đã làm lại file cho bạn, đã chỉnh sửa lại code,bạn nên nhớ đừng đưa dòng dữ liệu này vào ột A vì thế sẽ dễ bị sai
Mã:
[TABLE="width: 408"]
[TR]
  [TD="width: 408"]Cell Contents:  <BR/>- Count<BR/ColumnPercentage<BR/>[/TD]
[/TR]
[/TABLE]
vì điều kiện code ở đây dựa vào 2 điều kiện chỗ tô màu đỏ nha:
Mã:
Private Sub CommandButton1_Click()Dim i As Long, Leng As Long, rEnd As Long, m As Long, n As Long, k As Long
Dim Ktu As String, Gtri As String
On Error Resume Next
rEnd = Sheet2.[a100000].End(xlUp).Row
Sheet1.[a3].Resize(10000, 3).Clear
For n = 1 To rEnd
    
[COLOR=#ff0000]    If Len(Sheet2.Cells(n, 1)) > 6 And Right(Sheet2.Cells(n, 1), 5) = "<BR/>" Then[/COLOR]
        Leng = Len(Sheet2.Cells(n, 1))
        If Leng > 6 Then
            For i = 1 To Leng
                m = 0
                Ktu = Right(Left(Sheet2.Cells(n, 1), i), 1)
[COLOR=#ff0000]                If Ktu = ":" Then[/COLOR]
                    m = i + 1
                    If m > 0 Then
                        k = k + 1
                        Gtri = Left(Right(Sheet2.Cells(n, 1), Leng - m), Leng - m - 5)
                        With Sheet1
                            .Cells(k + 2, 1) = k
                            .Cells(k + 2, 2) = Gtri
                            .Cells(k + 2, 2).Select
                            ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
                            "Table!A" & n & "", TextToDisplay:="" & Gtri & ""
                            .Cells(k + 2, 3) = Sheet2.Cells(n + 6, 2)
                        End With
                    End If
                    Exit For
                End If
            Next i
        End If
    End If
Next n
If k > 0 Then
    rEnd = Sheet1.[b100000].End(xlUp).Row
    With Sheet1.Range("a3:c" & rEnd)
        .Borders.LineStyle = 1
        .VerticalAlignment = xlCenter
        .HorizontalAlignment = xlCenter
    End With
End If


End Sub
 

File đính kèm

Upvote 0
Cám ơn anh nhiều lắm. Sau khi chạy macro thì mình tùy chỉnh lại yêu cầu cho output hoàn thiện với mọi dự án luôn, nếu được thì mình mong muốn như sau:

1/ Do raw data lúc nào cũng có dòng: "Cell Contents: <BR/>- Count<BR/>- Column Percentage<BR/>" -> lúc nào cũng xuất hiện ở cột A. Do đó có thể tùy chỉnh macro lại để ignore dòng này - HOẶC: Di chuyển qua cột khác (khác cột A), sau khi chạy macro tạo hyperlink xong thì move lại cột A ngay vị trí ban đầu.
2/ Raw data ban đầu thì lúc nào cũng chỉ có 1 sheet "Table". Cho nên mình sẽ tạo 1 add-in để click lệnh, sau đó chương trình tự tạo 1 sheet với tên "Index" và trong sheet "Index" lúc nào cũng có sẵn template với nội dung như sau:
[TABLE="width: 446"]
[TR]
[TD="colspan: 3"][/TD]
[/TR]
[/TABLE]
[TABLE="width: 446"]
[TR]
[TD="colspan: 3"]#TABLE INDEX#[/TD]
[/TR]
[TR]
[TD]Table No[/TD]
[TD]Table Title[/TD]
[TD]Base

[/TD]
[/TR]
[/TABLE]

3/ Và title bây giờ mình có điều chỉnh lại, lấy tự động vớ mong muốn như sau: trên mỗi dòng "Project..." thì lấy nguyên title "X3 : X3: Ques Temp 1", chỉ bỏ chữ "<BR/>"

[TABLE="width: 390"]
[TR]
[TD]X3 : X3: Ques Temp 1<BR/>[/TD]
[/TR]
[TR]
[TD]Project Test[/TD]
[/TR]
[TR]
[TD]Table: 574<BR/>Level: Top

4/ Và sau dòng: "Table: 574<BR/>Level: Top", mình insert text "Back To Index" để link về sheet "Index"

[TABLE="width: 390"]
[TR]
[TD]X3 : X3: Ques Temp 1<BR/>[/TD]
[/TR]
[TR]
[TD]Project Test[/TD]
[/TR]
[TR]
[TD]Table: 574<BR/>Level: Top[/TD]
[/TR]
[TR]
[TD]Back to Index


[/TD]
[/TR]
[/TABLE]
Ngày cuối tuần là để relax nhưng lại làm phiền anh, mong anh giúp lần này nữa nhé :)[/TD]
[/TR]
[/TABLE]
 
Upvote 0
Cám ơn anh nhiều lắm. Sau khi chạy macro thì mình tùy chỉnh lại yêu cầu cho output hoàn thiện với mọi dự án luôn, nếu được thì mình mong muốn như sau:

1/ Do raw data lúc nào cũng có dòng: "Cell Contents: <BR/>- Count<BR/>- Column Percentage<BR/>" -> lúc nào cũng xuất hiện ở cột A. Do đó có thể tùy chỉnh macro lại để ignore dòng này - HOẶC: Di chuyển qua cột khác (khác cột A), sau khi chạy macro tạo hyperlink xong thì move lại cột A ngay vị trí ban đầu.
2/ Raw data ban đầu thì lúc nào cũng chỉ có 1 sheet "Table". Cho nên mình sẽ tạo 1 add-in để click lệnh, sau đó chương trình tự tạo 1 sheet với tên "Index" và trong sheet "Index" lúc nào cũng có sẵn template với nội dung như sau:
..................

Điều kiện: Trong file chỉ có 1 sheet Table?
Thử Sub này:
PHP:
Public Sub GPE()
Dim Rng As Range, Cll As Range, dArr(), I As Long, K As Long
With Sheets("Table")
    Set Rng = .Range(.[A1], .[A1048576].End(xlUp))
    ReDim dArr(1 To Rng.Rows.Count, 1 To 4)
    For Each Cll In Rng
        If InStr(UCase(Cll), "QUES") Then
            K = K + 1
            dArr(K, 1) = K
            dArr(K, 2) = Left(Cll, InStr(UCase(Cll), "<") - 1)
            dArr(K, 3) = Cll.Offset(6, 1)
            dArr(K, 4) = Cll.Row
            Cll.Offset(3).Select
            ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "Index!B2", TextToDisplay:="Back to Index"
        End If
    Next Cll
End With
Sheets.Add
With ActiveSheet
    .Name = "Index"
    .[B1] = "#TABLE INDEX#"
    .[A2] = "Table No": .[B2] = "Table Title": .[C2] = "Base"
    .[A3].Resize(K, 3) = dArr
    .Columns("A:C").EntireColumn.AutoFit
    For I = 1 To K
        Range("B" & I + 2).Select
        .Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "Table!A" & dArr(I, 4), TextToDisplay:=dArr(I, 2)
    Next I
End With
Set Rng = Nothing
End Sub
Nếu có sẵn sheet Index thì lỗi "ráng chịu". Tôi chưa bẫy lỗi này.
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ. Thanks anh nhiều. chạy smooth rồi anh.
Nhưng Anh ơi, key word "QUES" trong template file là em demo thôi. thật tế mỗi table, tên title khác nhau, vì dụ:

A1_1 : OCCASIONS TO DRINK<BR/>
Project xxxx
Table: 1<BR/>Level: Top

Do đó, dòng title (như điều kiện cũ, lấy hết, chỉ bỏ "<BR/>") em muốn lấy là trên dòng Project xxxx, có thể xem 2 key rows ở đây là:
Project xxxx
Table: xxx

bên cạnh đó, nếu đã có sheet "Index" rồi, thì anh bẫy giúp em: show 1 thông báo: "Sheet Index đã tồn tại. Bạn có muốn Overwrite không? Nếu Yes thì clear nội dung sheet Index và chạy macro bình thường, nếu không thì chương trình sẽ tạo ra thêm 1 sheet khác với tên "Index_1", tương tự, lần sau chạy nữa thì tạo thêm sheet "Index_2"...

****xong vụ trên, nếu em muốn phát triển thêm, ví dụ, trong file em có 3 sheets, thì khi chạy macro, sẽ tự tạo 3 sheets index: Index_1, Index_2, Index_3. Vậy có quá phức tạo không anh? Mong anh tư vấn cho em với

Em cám ơn anh và các pác trên forum đã dành thời gian cho đề tài của em vào ngày Chủ Nhật ạ :)
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ. Thanks anh nhiều. chạy smooth rồi anh.
Nhưng Anh ơi, key word "QUES" trong template file là em demo thôi. thật tế mỗi table, tên title khác nhau, vì dụ:

A1_1 : OCCASIONS TO DRINK<BR/>
Project xxxx
Table: 1<BR/>Level: Top

Do đó, dòng title (như điều kiện cũ, lấy hết, chỉ bỏ "<BR/>") em muốn lấy là trên dòng Project xxxx, có thể xem 2 key rows ở đây là:
Project xxxx
Table: xxx

bên cạnh đó, nếu đã có sheet "Index" rồi, thì anh bẫy giúp em: show 1 thông báo: "Sheet Index đã tồn tại. Bạn có muốn Overwrite không? Nếu Yes thì clear nội dung sheet Index và chạy macro bình thường, nếu không thì chương trình sẽ tạo ra thêm 1 sheet khác với tên "Index_1", tương tự, lần sau chạy nữa thì tạo thêm sheet "Index_2"...

****xong vụ trên, nếu em muốn phát triển thêm, ví dụ, trong file em có 3 sheets, thì khi chạy macro, sẽ tự tạo 3 sheets index: Index_1, Index_2, Index_3. Vậy có quá phức tạo không anh? Mong anh tư vấn cho em với

Em cám ơn anh và các pác trên forum đã dành thời gian cho đề tài của em vào ngày Chủ Nhật ạ :)

1/ Điều kiện nhờ giúp ban đầu là trong sheet chỉ có 1 sheet Table. Tôi làm theo yêu cầu.
2/ Raw data ban đầu thì lúc nào cũng chỉ có 1 sheet "Table". Cho nên mình sẽ tạo 1 add-in để click lệnh, sau đó chương trình tự tạo 1 sheet với tên "Index" và trong sheet "Index" lúc nào cũng có sẵn template với nội dung như sau:
2/ Dò điều kiện dòng có "Project Test" chứ không phải "ques", tôi đã sửa bằng Code dưới.
3/ Lỗi nếu đã có sheet "Index" rồi (cũng không có yêu cầu), thì tôi bẫy lỗi bằng cách không Insert thêm sheet nữa, yêu cầu thông báo và Index1, Index2.... không có trong yêu cầu ban đầu.
4/ Chuyện gì VBA cũng "có thể" làm, nhưng nói rõ từ đầu, làm xong rồi bạn mới "nếu như" thì ít ai theo lắm.
PHP:
Public Sub GPE()
Dim Ws As Worksheet, Rng As Range, Cll As Range, dArr(), I As Long, K As Long, DK As Boolean
On Error Resume Next
With Sheets("Table")
    Set Rng = .Range(.[A1], .[A1048576].End(xlUp))
    ReDim dArr(1 To Rng.Rows.Count, 1 To 4)
    For Each Cll In Rng
        If Cll.Value = "Project Test" Then
            K = K + 1
            dArr(K, 1) = K
            dArr(K, 2) = Left(Cll.Offset(-1), InStr(Cll.Offset(-1), "<") - 1)
            dArr(K, 3) = Cll.Offset(5, 1)
            dArr(K, 4) = Cll.Offset(-1).Row
            Cll.Offset(2).Select
            ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "Index!B2", TextToDisplay:="Back to Index"
        End If
    Next Cll
End With
For Each Ws In Worksheets
    If Ws.Name = "Index" Then DK = True
Next Ws
If DK = False Then
    Sheets.Add
    ActiveSheet.Name = "Index"
End If
Sheets("Index").Select
With ActiveSheet
    .[B1] = "#TABLE INDEX#"
    .[A2] = "Table No": .[B2] = "Table Title": .[C2] = "Base"
    .[A3:C1000].Clear
    .[A3].Resize(K, 3) = dArr
    .Columns("A:C").EntireColumn.AutoFit
    For I = 1 To K
        .Range("B" & I + 2).Select
        .Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "Table!A" & dArr(I, 4), TextToDisplay:=dArr(I, 2)
    Next I
End With
Set Rng = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ. Em cảm ơn anh. Em sẽ rút kinh nghiệm lần sau --=0
Do ban đầu gấp quá nên chỉ capture những ý chính. càng về sau thì muốn tool hoàn thiện hơn nên phát sinh 1 số vấn đề khác.
Anh ơi, do bên em sau này sẽ có nhiều dự án với tên khác nhau, trong tình huống này em đặt "Project Test" (Do vấn đề bảo mật thông tin trong công ty nên em không tiện nêu rõ dự án đang làm). Vì vậy, anh sữa code giúp em chỉ dò "Project" và dòng dưới nó là "Table:" để xác định key word

A1_1 : OCCASIONS TO DRINK<BR/>
Project xxxx
Table: 1<BR/>Level: Top

-> để em chạy cho mọi dự án.
**Và khi click vào vị "Back To Index" của table đó trong sheet "Table", thì em muốn move qua sheet "Index" ngay tại vị trí link của table đó. Hiện tại thì con trỏ move lên dòng B2 của sheet "Index"


**Anh giúp em thêm code nếu trong file có nhiều sheet thì khi chạy macro sẽ tự tạo nhiều sheet "Index_1", "Index_2", tương ứng được không ạ?

Cám ơn anh trước
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ. Em cảm ơn anh. Em sẽ rút kinh nghiệm lần sau --=0
Do ban đầu gấp quá nên chỉ capture những ý chính. càng về sau thì muốn tool hoàn thiện hơn nên phát sinh 1 số vấn đề khác.
Anh ơi, do bên em sau này sẽ có nhiều dự án với tên khác nhau, trong tình huống này em đặt "Project Test" (Do vấn đề bảo mật thông tin trong công ty nên em không tiện nêu rõ dự án đang làm). Vì vậy, anh sữa code giúp em chỉ dò "Project" và dòng dưới nó là "Table:" để xác định key word

A1_1 : OCCASIONS TO DRINK<BR/>
Project xxxx
Table: 1<BR/>Level: Top

-> để em chạy cho mọi dự án.
**Và khi click vào vị "Back To Index" của table đó trong sheet "Table", thì em muốn move qua sheet "Index" ngay tại vị trí link của table đó. Hiện tại thì con trỏ move lên dòng B2 của sheet "Index"


**Anh giúp em thêm code nếu trong file có nhiều sheet thì khi chạy macro sẽ tự tạo nhiều sheet "Index_1", "Index_2", tương ứng được không ạ?

Cám ơn anh trước

1/ Nếu chỉ muốn xét dòng nào có chữ "Project" thì tìm trong code:
PHP:
For Each Cll In Rng
        If Cll.Value = "Project Test" Then '<-----Sửa dòng này thành: If Cll.Value Like "Project*" Then'
            K = K + 1

2/ Bạn vẫn chưa rút kinh nghiệm việc hỏi bài. Muốn hỏi thì phải kèm file.
Ai biết bạn đặt tên cho sheet là gì, có quy luật tên sheet không, trong file có bao nhiêu sheet, sheet nào của Index1, sheet nào của Index2,.... Ít nhất cũng có các sheet để người viết code còn kiểm tra kết quả sau khi chạy code.
3/ Bấm nút "Back to Index" thì trở về sheet Index, ở ô nào thì có "bất lợi" chỗ nào? Không lẽ ở sheet Index bạn chỉ bấm link vào 1 ô cố định hoài sao? Không chọn bấm vào ô khác ?
 
Upvote 0
hihihi..cám ơn anh đã nhắc nhẹ em :-=

em đã thay code và xong vụ "Project*" rồi.

***em có attached file mẫu cho hyperlink_multi_sheet.
hiện tại file có 3 sheets, nếu sau khi chạy code xong, thì sẽ có 3 sheets Index, mỗi sheet Index sẽ đứng trước sheet dữ liệu. Với thứ tên theo thứ tự: Index 1, Index 2, Index 3, v.v..
hiện tại em đang thả lỏng với tên sheet data bất kỳ, không cố định tên

Mong anh xem giúp em nhé
 
Upvote 0
Cám ơn anh nhiều lắm. Sau khi chạy macro thì mình tùy chỉnh lại yêu cầu cho output hoàn thiện với mọi dự án luôn, nếu được thì mình mong muốn như sau:

1/ Do raw data lúc nào cũng có dòng: "Cell Contents: <BR/>- Count<BR/>- Column Percentage<BR/>" -> lúc nào cũng xuất hiện ở cột A. Do đó có thể tùy chỉnh macro lại để ignore dòng này - HOẶC: Di chuyển qua cột khác (khác cột A), sau khi chạy macro tạo hyperlink xong thì move lại cột A ngay vị trí ban đầu.
Xử lý vấn đề này chỉ cần thêm vào một điều kiện giới hạn max chuỗi của nó là được
Mã:
If Len(Sheet2.Cells(n, 1)) > 6 and [COLOR=#ff0000]Len(Sheet2.Cells(n, 1)) < 40[/COLOR] And Right(Sheet2.Cells(n, 1), 5) = "<BR/>" Then
Vấn đề của bạn nó hơi dỡ khi bạn quản lí như thế
(1) ứng với mỗi sheet ("Table") là một sheet("Index") vấn đề này làm AddIn khá rắc rối và không ai có nhiều thời gian để làm cho bạn

Cách xử lí dữ liệu của mình nếu là bạn:

- Với mỗi sheet("Table") có thể đặt theo stt Table1,Table2,...Table3

-và tại mỗi sheet(Table") đó sẽ có hyperlink tại dòng chữ "Back To Index" sẽ link về một sheet("Index") duy nhất, và tại sheet("Index") sẽ link tới đứng vị trí bảng dữ liệu dành riêng cho hyperlink tại mỗi sheet("Table") . nghĩa là một sheet("Index") sẽ chứ nhiều bảng và mỗi bảng quản lí một hyperlink cho riêng mỗi sheet("Table")

-Vậy là khi bạn tạo một sheet("Table") mới thì sheet(Index) tự động tạo một bảng mới quản lí Hyperlink của sheet("Table") bạn mới tạo(Nghĩa là khi sheet("Table") bạn tạo mới đó thì dòng "Back To Index" sẽ phải tự động link tới đúng bảng quản lí Hyperlink của nó trong sheet("Index")

Cách quản lí này có thể đơn giản hơn của bạn, nhưng để giải quyết nó không phải đơn giản,nếu bạn muốn theo hướng này thì mình có thể giúp bạn, nhưng khá tốn nhiều thời gian,do mình còn bận rộn với công việc!
 
Upvote 0
Dạ, em cảm ơn anh nhiều lắm! :)--=0
 
Upvote 0
Xử lý vấn đề này chỉ cần thêm vào một điều kiện giới hạn max chuỗi của nó là được
Mã:
If Len(Sheet2.Cells(n, 1)) > 6 and [COLOR=#ff0000]Len(Sheet2.Cells(n, 1)) < 40[/COLOR] And Right(Sheet2.Cells(n, 1), 5) = "<BR/>" Then
Vấn đề của bạn nó hơi dỡ khi bạn quản lí như thế
(1) ứng với mỗi sheet ("Table") là một sheet("Index") vấn đề này làm AddIn khá rắc rối và không ai có nhiều thời gian để làm cho bạn

Cách xử lí dữ liệu của mình nếu là bạn:

- Với mỗi sheet("Table") có thể đặt theo stt Table1,Table2,...Table3

-và tại mỗi sheet(Table") đó sẽ có hyperlink tại dòng chữ "Back To Index" sẽ link về một sheet("Index") duy nhất, và tại sheet("Index") sẽ link tới đứng vị trí bảng dữ liệu dành riêng cho hyperlink tại mỗi sheet("Table") . nghĩa là một sheet("Index") sẽ chứ nhiều bảng và mỗi bảng quản lí một hyperlink cho riêng mỗi sheet("Table")

-Vậy là khi bạn tạo một sheet("Table") mới thì sheet(Index) tự động tạo một bảng mới quản lí Hyperlink của sheet("Table") bạn mới tạo(Nghĩa là khi sheet("Table") bạn tạo mới đó thì dòng "Back To Index" sẽ phải tự động link tới đúng bảng quản lí Hyperlink của nó trong sheet("Index")

Cách quản lí này có thể đơn giản hơn của bạn, nhưng để giải quyết nó không phải đơn giản,nếu bạn muốn theo hướng này thì mình có thể giúp bạn, nhưng khá tốn nhiều thời gian,do mình còn bận rộn với công việc!


dạ.thanks anh đã đóng góp ý kiến. Nó giúp mình khai sáng sau này quản lý file trong dự án của mình.
Anh Ba Tê đã giúp mình làm multisheet_hyperlink rồi. nhận tiện đây, nếu anh có thời gian thì giúp mình để sau này khách hàng có yêu cầu như vậy thì mình áp dụng liền.
 
Upvote 0

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

Back
Top Bottom