2012-02-23 15 views
1

誰かが私に次の問題を解決するのに役立つかどうか疑問に思っていました。誰かがこれまで同じワークシートのdctest/Inの値を取得するのを助けてくれました。しかし、今、私は同じことをする必要がありますが、別のワークシートで行う必要があります。2つの異なるワークシートから同じ名前が一致した後に%値を取得する方法

これは、シート1(1)式で示すいくつかの誤りがあり

enter image description here

Sub marco1() 

'start making Sheet1 into % 
'~~> Add/Remove the text here which you want to ignore 
Excludetext = "In,test1,test2,test3,test4,test5,test6" 

MyArray = Split(Excludetext, ",") 

Set ws = Sheets("Sheet1") 
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row 

'Set Column B into % 
For i = 1 To LastRow 
    boolContinue = True 

    For j = 0 To UBound(MyArray) 
     SearchText = UCase(Trim(MyArray(j))) 
     If UCase(Trim(ws.Range("A" & i).Value)) = SearchText Then 
      boolContinue = False 
      Exit For 
     End If 
    Next j 

    If boolContinue = True Then 
     With Range("B" & i) 
      .Formula = _ 
      "=OFFSET(INDIRECT(ADDRESS(INDEX(MATCH(A" & i & _ 
      ",$A$1:$A$45,0),1,0),1,1,1,'Duplicated_Sheet1')),0,1)/$B$5" 
      .NumberFormat = "0.00%" 
     End With 
    End If 
Next i 
End sub 

%を取った後、私が作ったコピーであると言うのSheet1

enter image description here

数式の間違い?前もって感謝します!

+0

あなたは、カラムA/Bまたは列A/Cまたは3つすべてがになることを意味しています別のワークシートですか?そして、前回と同じように、Col Jに数式を入れてはいけませんか? –

+0

私は写真を編集しましたが、今は別のワークシートで同じことを一致させる必要があります。この例では、それはdoesntのため、 – user1204868

答えて

1

これはあなたの試みですか?

がしようとした別のシートのセルのアドレスを()を使用する場合

Option Explicit 

Sub Sample() 
    Dim ws As Worksheet 
    Dim wsData As String 
    Dim SearchText As String, Excludetext As String 
    Dim LastRow As Long, i As Long, j As Long 
    Dim MyArray() As String 
    Dim boolContinue As Boolean 

    '~~> Add/Remove the text here 
    Excludetext = "In,Test1,Test2,Test3,Test4,Test5,Test6" 

    '~~> Change this to the relevant sheetname which has the data 
    wsData = "Sheet1" 

    MyArray = Split(Excludetext, ",") 

    Set ws = Sheets("Sheet2") 
    LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row 

    For i = 1 To LastRow 
     boolContinue = True 

     For j = 0 To UBound(MyArray) 
      SearchText = MyArray(j) 
      If ws.Range("A" & i).Value = SearchText Then 
       boolContinue = False 
       Exit For 
      End If 
     Next j 

     If boolContinue = True Then 
      With ws.Range("B" & i) 
       .Formula = _ 
       "=OFFSET(INDIRECT(ADDRESS(INDEX(MATCH(A" & i & _ 
       "," & wsData & "!$A$1:$A$11,0),1,0),1,1,TRUE,""" & _ 
       wsData & """)),0,1)/" & wsData & "!B1" 
       .NumberFormat = "0.00%" 
      End With 
     End If 
    Next i 
End Sub 

をテストし、あなたは追加の引数を指定する必要があります。 Excelのヘルプアドレス機能の

構文から

ストレート[sheet_text]は、我々が参照しているシートの名前です

ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text]) 

。 Excelヘルプで詳細を読むことをお勧めします。

これは、たとえばHTH

シドDCTEST

=OFFSET(INDIRECT(ADDRESS(INDEX(MATCH(A7,Sheet1!$A$1:$A$11,0),1,0),1,1,TRUE,"Sheet1")),0,1)/Sheet1!B1 

の実際の式で

+0

HIは再び助けのためにあなたをとても感謝... – user1204868

+0

iが生じた後に任意のより多くの周囲がイマイチない限り、実際に停止する、uの1つのより多くの質問をすることができます。それが列の場合にはどういうことかと私は非常に不思議です。列が最終的に終わった後でコーディングを停止させることは可能ですか? – user1204868

+0

申し訳ありませんが、私はあなたを取得できませんでしたか? –

関連する問題