2017-04-06 12 views
2

エクスポートすると、単一のセルに1つの文字列として注文番号(常に7桁)が表示されます。例:1234567と9876543の注文は、1つのセルに12345679876543として表示されます。セルあたりの注文の最大数はなく、セルごとに異なります。Excel/VBA - 文字をN文字ごとに文字列に挿入する方法

文字を7桁ごとに追加できるので、その後にテキストを列に追加できますか?

答えて

4

長くて複雑な式を使用しないようにするには、VBAを使用することをおすすめします。

標準モジュールに以下のコードを貼り付け、その後、ワークシート上で、このように式を使用することができます。

=InsertPipe(A1) 

Function InsertPipe(s As String) 
    Dim i As Long 
    Dim result As String 

    For i = 1 To Len(s) Step 7 
     On Error Resume Next 
     result = result & Left(s, 7) & "|" 
     s = Mid(s, 8, Len(s) - 7) 
    Next i 

    InsertPipe = Left(result, Len(result) - 1) 
End Function 
+1

これは素晴らしい、多くのおかげで、それは素晴らしい仕事をした! – Jonorl

1

CONCATENATEを使用できます。

例の値は、二つのセルにある場合:=CONCATENATE(A1,",",B1)

例の値は、一つのセル内にある場合=IF(LEN(A1)>7,CONCATENATE(LEFT(A1,7),",",MID(A1,8,100)))

EDITは(しばらく前に見つかった)あなたが使用することができ

VBA-コード

を追加
Sub AddACharacter() 

Dim Rng As Range 
Dim InputRng As Range, OutRng As Range 
Dim Row As Integer 
Dim Char As String 
Dim Index As Integer 
Dim arr As Variant 
Dim Val As String 
Dim OutVal As String 
Dim Num As Integer 
xTitleId = "Add a character" 
Set InputRng = Application.Selection 
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address,Type:=8) 
Row = Application.InputBox("Number of characters :", xTitleId, Type:=1) 
Char = Application.InputBox("Specify a character :", xTitleId, Type:=2) 
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8) 
Set OutRng = OutRng.Range("A1") 
Num = 1 
For Each Rng In InputRng 
Val = Rng.Value 
OutVal = "" 
For Index = 1 To VBA.Len(Val) 
    If Index Mod Row = 0 And Index <> VBA.Len(Val) Then 
     OutVal = OutVal + VBA.Mid(Val, Index, 1) + Char 
    Else 
     OutVal = OutVal + VBA.Mid(Val, Index, 1) 
    End If 
Next 
OutRng.Cells(Num, 1).Value = OutVal 
Num = Num + 1 
Next 
End Sub 
+0

これは最初の7桁の数字の後にコンマを追加して、私が編集 – Jonorl

+0

の倍数があるようにこのすべての7桁の数字を持っている必要があるだろう'SUBSTITUTE'は私の初心者の考えよりも良い – krib

0

文字列がA2であると仮定すると、これを試してください。 In B2

=SUBSTITUTE(A2,LEFT(A2,7),LEFT(A2,7)&"|") 

上記の式には、 "|"が挿入されます。 7文字後に。

+0

を参照してください@Jonorl限り7 – krib

+0

これらのどちらも実際には質問に答えません。 OPには1つのセルに注文番号がいくつあってもかまいませんので、6つの注文番号がある場合は5つのパイプ '|'を挿入する必要があります... – CallumDA

+0

それは意味があります。要件は十分に理解されていませんでした。 :) – sktneer

1

あなたはダウン式コピーaccrossとを使用していますが、希望することができます私の例では、b1からz1まで、これらの線に沿って何かを使うことができます。

=MID($A1,IF(COLUMN()-2=0,1,((COLUMN()-2)*7)+1),7)

enter image description here

関連する問題