2011-12-07 48 views
1

我有一個大的VBA腳本文件引用了Excel工作表的單元格。問題是我水平放置的應用程序屬性的數量變得大於256,因此我必須更改存儲屬性的方向。用文本中的列交換行

因此,我不想通過.Cells(row,column).Value訪問一個值,而是通過交換上一次調用中的行和列來訪問所有內容。

我可以從所有的代碼去手動改變一切,但我寧願使用正則表達式。我想出了這個找到我需要的所有引用。

Worksheets\(\"xxx\.DAT\"\)\.Cells\([\w +-]{1,15}, [\w +-]{1,15}\) 

結果是這個樣子工作表( 「xxx.DAT」)細胞(SystemNr + 1,21 + ROW1)

我想交換與呼叫到細胞屬性欄中的行,所以最終的結果應該像工作表(「xxx.DAT」)。電池(21 + ROW1,SystemNr + 1)

我製作了一個小型的.NET應用程序,並使用下面的代碼以獲得所有的匹配,但我如何交換與匹配自己的列的行?現在

string input = tbContent.Text; 
foreach (Match match in Regex.Matches(input, tbRegex.Text, RegexOptions.IgnorePatternWhitespace)) 
{ 
    tbResult.AppendText(match + Environment.NewLine); 
} 

,對於每場比賽,我想獲得列索引的列指標的參考和一個這樣我就可以交換它們並替換原來的文本。

謝謝, 阿德里安。

回答

2

我不知道你怎麼源數據的樣子,但在這裏是如何交換兩件事情很短的C#示例:如果您創建一個捕獲組,通過把一個子模式到支架

String s = "A:B"; 
Regex r = new Regex(@"(\w):(\w)"); 

Console.WriteLine(r.Replace(s, "$2:$1")); 

,您可以訪問替換字符串中的子模式匹配。第一組(由第一個開頭的圓括號定義)由$1訪問,第二組由$2訪問。所以在這個基本的例子中,只需替換第二組,然後替換第一組,這樣你就改變了你的子匹配的順序。

+0

非常感謝。我從來沒有使用過「$」操作符:) – Adrian