2017-12-06 10 views
-1

列Bのセルの終了句読点(私の場合は空白行)がExcelと一致しないインスタンスを捕捉して解決しようとしています。背景のために、列Aは英語のテキストを含み、列Bは非常に同じ内容の翻訳版を含む。問題は - いくつかのケースでは、ソーステキストはセル内のテキストの最後に空白行があり、翻訳されたテキストは見つからないため、それらのインスタンスを見つけて修正する必要があります。Excelの列AとBの末尾の句読点を比較する(VBA?)

だから、私はしようとしている:

1)細胞内の場合)列Bで同じ行に隣接するセルに列Aに

2を各セルの最後の行を比較列Aは、列Bで終わりに空白行と対応するセルを有しておらず、

列Bのセルの端部に、実施例をこのような空白行を追加します。

  **Column A** **Column B** 
Row 1  Text X   Text Y 
      \n 
Row 2  Text X   Text Y 
Row 3  Text X   Text Y 
      \n 
Row 4  Text X   Text Y 
      \n    \n 

したがって、この例ではアボセルA1とA3の対応するものと同様に、最後に改行(\ n)がないため、セルB1とB3にフラグを立てる必要があります。

ありがとうございます!

答えて

1

これは、セルに改行が存在するかどうかを調べ、存在する場合は列Bにもそれを追加します。

Sub foo2() 
FindString = "/n" 
LastRow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row 'find the last row in column A with data 
For i = 1 To LastRow 
Set Rng = Sheet1.Cells(i, 1).Find(What:=FindString) 'look for the line feed at in this cell 
      If Not Rng Is Nothing Then 'if found 
       Sheet1.Cells(i, 2).Value = Sheet1.Cells(i, 2).Value & "/n" 'add line feed to column B 
      End If 
Next i 
End Sub 

それとも、私はこのような何かがそれを行うだろうと考えているあなたは、文字列「/ N」を探していませんし、あなたがラインフィードを探している場合:

Sub foo2() 
LastRow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row 'find the last row in column A with data 
For i = 1 To LastRow 
Set Rng = Sheet1.Cells(i, 1).Find(What:= vbLf) 'look for the line feed at in this cell 
      If Not Rng Is Nothing Then 'if found 
       Sheet1.Cells(i, 2).Value = Sheet1.Cells(i, 2).Value & vbLf 'add line feed to column B 
      End If 
Next i 
End Sub 

はUPDATE:

Sub foo2() 
Dim Str as Variant 
    LastRow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row 'find the last row in column A with data 
    For i = 1 To LastRow 
     Str = Sheet1.Cells(i, 1).Value 
     If Right(Str, 1) = vbLf Then 'if found 
       Sheet1.Cells(i, 2).Value = Sheet1.Cells(i, 2).Value & vbLf 'add line feed to column B 
      End If 
Next i 
End Sub 
+0

のExcelドキュメントを見ることができます。「\ n」で終わり、 '\ n'だけではないセルがあります。 – NetMage

+0

正しいですが、\ nは改行で、実際の文字列 "\ n"ではありません。 –

+0

@Xabier - 迅速なフォローアップの質問をしてもらえますか?期待どおりに動作しますが、改行/フィードが複数あるセルでは機能しません。私は、このマクロで最後の改行(改行後の内容/文字なし)をチェックし、同じセル内に複数行のテキスト(各行を区切る改行)があるので、前の行を無視します。 –

1

回線終端不一致を見つけるために使用する列C:

=(CODE(RIGHT(A1,1))=10)<>(CODE(RIGHT(B1,1))=10) 

数式をすべての行にコピーし、TRUEにフィルターをかけます。同様に、改行は、細胞の内部にある場合

::改行スペースは、私は2つのいずれかを行うだろうセルの内部であるか、次のセルにつながるかどうかに応じて

0

CELL A1 = "Text X \n"、 シンプルなソリューションこれに余分な列を挿入し、=TRIM()の式を使用することができます。 TRIM()式改行がCELL A1 = "Text X"のように、次のセル上にある場合は、先頭と末尾のスペースを取り除きます、あなたはExcelのドキュメントにhere

を見ることができ、CELL A2 = "\n"、 次に、あなただけのセルにLEN()数式を使用することができ、かつフィルタを "0"に設定します。 LEN()here.

関連する問題