0

別のデータ ソースから取得したデータを含む Excel スプレッドシートがあります。

私が抱えている問題は、データが「繰り返される」ことです:

(サイトは列 A で、所有者は列 B):

Site                         Owner
http://website1.com          John Doe
http://website1.com          Jane Doe
http://website2.com          John Smith
http://website2.com          Jane Smith
http://website2.com          John Doe

これを変更したいのはこれです:

Site                         Owner1       Owner 2      Owner 3
http://website1.com          John Doe     Jane Doe
http://website2.com          John Smith   Jane Smith   John Doe

私は現在、各サイトの「所有者」をコピーし、これを達成するために「転置」方法を使用して貼り付けています。問題は、たくさんのレコードがあり、これは非常に退屈でおそらく無駄な作業です。

マクロ、スクリプト、またはその他の方法でこれを自動的に行う方法はありますか?

ありがとう!

4

3 に答える 3

1

私はあなたのために VBA を書きません。しかし、簡単なワークシートのクリックでそれを達成する方法は次のとおりです。

OzGrid の mrickerson による次のカスタム関数が必要になります。

Function ConcatIf(ByVal compareRange As Range, ByVal xCriteria As Variant, _
    Optional ByVal stringsRange As Range, Optional Delimiter As String) As String
    Dim i As Long, j As Long, criteriaMet As Boolean

    Set compareRange = Application.Intersect(compareRange, _
    compareRange.Parent.UsedRange)

    If compareRange Is Nothing Then Exit Function
    If stringsRange Is Nothing Then Set stringsRange = compareRange
    Set stringsRange = compareRange.Offset(stringsRange.Row - compareRange.Row, _
    stringsRange.Column - compareRange.Column)

    For i = 1 To compareRange.Rows.Count
        For j = 1 To compareRange.Columns.Count
            If (Application.CountIf(compareRange.Cells(i, j), xCriteria) = 1) Then
                ConcatIf = ConcatIf & Delimiter & CStr(stringsRange.Cells(i, j))
            End If
        Next j
    Next i
    ConcatIf = Mid(ConcatIf, Len(Delimiter) + 1)
End Function

次に、Web サイトに固有の値を含む列を作成する必要があります。

次に、ConcatIf 関数を使用して結合された列を作成するだけで、それをコピーしてテキスト エディターに直接貼り付け、CSV として保存できます。

例

これを自動化したい場合は、難しくないと思いますが、一般的には次のようにします。幸運を。

于 2013-05-09T19:22:13.447 に答える