列内のデータを新しい列に移動するにはどうすればいいですか

列内のデータを新しい列に移動するにはどうすればいいですか

データを新しい列に分割する数式を探しています。簡単にできますが、分類したいです。

つまり、次のように各人の学位情報を含む列が 1 つあります。

BS 1990; MS 1991; PHD 1992;
Next record:
BS 1999; PHD 2000

データは、学位の数が異なる人ごとに異なります。BS をすべて 1 つの新しい列に移動し、MS をすべて別の列に移動し、PHD をすべて別の列に移動したいと考えています。データを新しい列に分割することはできますが、行ごとにデータが異なるため、正しい列に分割することはできません。

ありがとう。

答え1

列にデータあり、 でB1入力:

=IF(ISERROR(FIND("BS",A1)),"",MID(A1,FIND("BS",A1),7))

コピーしてください。C1入力:

=IF(ISERROR(FIND("MS",A1)),"",MID(A1,FIND("MS",A1),7))

コピーしてください。D1入力:

=IF(ISERROR(FIND("PHD",A1)),"",MID(A1,FIND("PHD",A1),8))

コピーしてください:

ここに画像の説明を入力してください

答え2

仮定すると

  • VBAは許容されますが、
  • Office 2000 以降 (分割機能用。2003 より古いバージョンを使用している場合は、お知らせください。確認させていただきます。)
  • 形式は一貫しており、セミコロンで区切られています。

次のコードを追加します:

Function XLstrtok2(sStr As String, sDesiredDegree As String)
    Dim ss() As String, i As Integer
    sStr = Trim(sStr)
    If Right(sStr, 1) = ";" Then sStr = Left(sStr, Len(sStr) - 1)
    ss = Split(sStr, ";")
    For i = 0 To UBound(ss)    
        If Left(Trim(ss(i)), Len(sDesiredDegree)) = sDesiredDegree Then XLstrtok2 = Trim(ss(i)): Exit Function    
    Next    
    XLstrtok2 = "--"
End Function

以下に、スプレッドシートと、セミコロンで結合された文字列の右側の異なる列に度数を入力する数式を示します。

列の幅が十分であることを確認してください。必要に応じて、下部に次のコードを追加することもできます。

With ActiveSheet.Columns("A:E")
    .AutoFit
    .HorizontalAlignment = xlLeft
End With

最後の列を必要なだけ右にコピーします。たとえば、E1:E3 を F1:F3 にコピーします。

最後の行を必要なだけ下にコピーします。たとえば、A3:E3 を A4:E4 にコピーし、A4 に新しいデータを入力します。

もちろん、適切な見出しのために上部に行を挿入するのが賢明です。

不明な点があればお知らせください。または、これが許容範囲内かどうかもお知らせください。データ入力とその一貫性 (たとえば、PHD と表示されることもあれば、Ph.D と表示されることもあります) に注意して、以下に示す PHD バリアントのように追加の列が必要かどうかを判断してください。

拡張スプレッドシート

拡張された数式

関連情報