6

アイテムの説明が可変長であるスプレッドシートがありますが、セルに折り返し行を強制するために常に「ハードリターン」で終了します。セルの最初の行を別のセルにコピーする必要があります。

INSTRを使用してハードリターン(非表示の文字)の最初のインスタンスを見つけてから、最初のN-1文字をコピーできますか?

例えば:

Dell PowerEdge R720XD
Chassis (Max of ......

また

Dell OptiPlex 7010 Minitower   
Intel Core.............

すべての場合において、長さに関係なく、セル内のテキストの最初の行をコピーする必要があります。

どうすればこれができるのでしょうか?

4

4 に答える 4

6

はい、簡単にできます

strShort = Left(strLong, InStr(strLong, vbCrLf) - 1)

vbCrLf場合によっては (うーん、Unix システムから供給された場合)、 (carriage Return, LineFeed) を a onlyに置き換える必要があるかもしれませんvbLf

Enterが含まれているかどうかわからない場合は、このコードで十分です

strShort = IIf(InStr(strLong, vbCrLf), Left(strLong, InStr(strLong, vbCrLf) - 2), strLong)
于 2013-02-25T19:50:47.500 に答える
2

改行の種類に応じて、次の方法で行うことができます。

InStr(Range("A1").Text, vbLf)
InStr(Range("A1").Text, vbCr)
InStr(Range("A1").Text, vbCrLf)

改行前のテキストを取得するには:

Left(Range("A1").Text, InStr(Range("A1").Text, vbLf) - 1)

改行後のテキストを取得するには:

Right(Range("A1").Text, InStr(Range("A1").Text, vbLf))
于 2013-02-25T19:53:10.003 に答える