簡體   English   中英

如何讓Excel在單元格的開頭忽略撇號

[英]How to get Excel to ignore apostrophe in beginning of cell

我正在編寫一個將簡單數據庫與Excel工作表同步的工具。 數據庫中表中的每個項對應於工作表中的一行。 我使用C#和Excel interop com接口將Excel工作表讀入工具,然后在同步后比較項目的值(即excel表中的一列),以確保它們相等。

昨天我發現了一個比較不正確的案例:

"'<MedalTitle>' Medal - <MedalDescription>"
"<MedalTitle>' Medal - <MedalDescription>"

第二個是我從Excel中讀到的那個,你可以看到它跳過了第一個撇號。 有沒有辦法告訴Excel將單元格視為文本(不,只是設置單元格的格式沒有幫助)?

我甚至試圖在VBA中復制單元格的值( 'hello' ),如下所示:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   Target.Offset(1, 0).Value = Target.Worksheet.Range("b2").Value
   Target.Offset(2, 0).Value = Target.Worksheet.Range("b2").Formula
   Target.Offset(3, 0).Formula = Target.Worksheet.Range("b2").Formula
   Target.Offset(4, 0).Formula = Target.Worksheet.Range("b2").Value
End Sub

結果是目標細胞的價值總是你好'

如果沒有辦法,我將不得不做一些丑陋的事情

if (dbitem.value[0] == ''' )
{
   // stuff
}
else
{
   // regular comparison
}

我擔心撇號'是Excel的一個特殊字符,當它出現在你發現的單元格中的第一個字符時。 它告訴Excel將字符串的其余部分視為文本,以便您可以在單元格中輸入類似'34.2的內容,並將其視為字符串而不是數字(用於格式化等)。

我建議你做一些類似於你建議的事情,除了你把它放到Excel中的地方,檢查第一個字符,並添加一個額外的'如果已經存在的話。

或者,您可以將撇號添加到所有值 - 如果您希望它們全部為文本。 這樣你就不需要額外的第一個字符檢查了。

查看Range對象的PrefixCharacter屬性,該屬性對應於該單元格

從幫助:

如果TransitionNavigKeys屬性為False ,則此前綴字符將為“文本標簽”或空白。 如果TransitionNavigKeys屬性為True ,則此字符將為“左對齊標簽”,右對齊標簽,^為居中標簽,\\為重復標簽或空白。

TransitionNavigKeys部分與Lotus 1-2-3的兼容性有關,所以它很可能是False

根據以下文章回答:

http://excel.tips.net/Pages/T003332_Searching_for_Leading_Apostrophes.html

(警告:可能會出現稍微惱人的彈出窗口)


編輯:實際上這可能不會有任何用處,因為PrefixCharacter是只讀的:(

edit2:我第一次是對的。 PrefixCharacter只有被填充,如果添加到單元格的值開始',所以就先回PrefixCharacterValue和串聯。 只要TransitionNavigKeysFalse ,就是這樣

嘗試使用targetcell.Value .Formula是在公式欄中看到的公式,而.Value是單元格的評估值。

所以,我猜你也會在原始代碼中使用.Formula 改變它應該工作。

編輯:好吧,它不起作用(尷尬)。

Excel專門處理起始單引號。特別是即使是模糊的單元格/范圍屬性也沒有訪問權限。 我能找到的唯一解決方法與您最初的想法基本相同。 開始:

If VarType(cell) = 8 And Not cell.HasFormula Then
 GetFormulaI = "'" & cell.Formula
Else
 GetFormulaI = cell.Formula
End If

您可以嘗試在查詢中預先掛起單個引號到文本字段(''''+ + dbField),以便對於具有嵌入單引號的字段,您的查詢將返回:

"''stuff in single quotes'"

放在Excel單元格中時會轉換為:

"'stuff in single quotes'"

對於沒有引號的字符,你會得到:

"'stuff that wasn't in quotes"

放在Excel單元格中時會轉換為:

"stuff that wasn't in quotes"

值得一試。 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM