How to Copy Comments in Excel (4 Different Ways)

If you copy a cell with a comment or note from one cell to another in the traditional way (using CTRL + C and CTRL + V), you transfer the cell value and formatting along with the comment. However, sometimes you need to copy the comment or note only without copying the original cell content.

It’s beneficial to reuse standard instructions, maintain consistency across sheets, and minimize errors. So, instead of standard copy-paste, we’ll use the Paste Special feature to only extract the comment from a cell.

Key Takeaways

Steps to use the Paste Special feature to copy comments:

➤ Select the cell or range with the comments and press  Ctrl  +  C  to copy its content.
➤ Now, right-click on the destination cell or range and choose Paste Special from the menu.
➤ Choose the Comments and Notes option and click Ok.

overview image

This article explores all the possible ways of copying a comment from one cell to another including using the Paste Special feature and a VBA macro.

Download Practice Workbook
1

Manually Copy Comments with the New Comment Option

In our project task dataset, we have columns for project worker names, tasks, project status, and priority. We’ll copy the comments from cells C3 and C7 into cells D3 and D7.

Manually Copy Comments with the New Comment Option

For only a few comments in a worksheet, you can manually copy each comment into the destination cells. Here’s how:

➤ Hover your mouse cursor over the cell containing the comment you want to copy. You can identify the cell from a small purple or red triangle in the top-right corner of the cell.
➤ As the comment appears, click on the Edit icon (small pencil sign) to turn on editing.

Manually Copy Comments with the New Comment Option

➤ Now, click on the comment texts and press  Ctrl  +  A  to select the comment. Use the  Ctrl  +  C  keyboard shortcut to copy the selected text.
➤ Close the comment dialog box by pressing the Checkmark sign or using the  Ctrl  +  Enter  key.

Manually Copy Comments with the New Comment Option

➤ Click on the destination cell where you want to copy the comment and right-click on it. Choose New Comment from the menu.

Manually Copy Comments with the New Comment Option

➤ In the comment field, press  Ctrl  +  V  to paste the comment.

Manually Copy Comments with the New Comment Option

➤ Finally, press the Checkmark or  Ctrl  +  Enter  key to add the comment to the selected cell. Repeat the process for the other comments.

Manually Copy Comments with the New Comment Option


2

Using the Paste Special Feature to Copy Comments

With this method, you can copy and paste a comment directly into the destination cells. Moreover, we get to copy a comment into multiple cells. Below are the steps:

Right-click on the cell with the comment and select Copy from the menu. Or, you can select the cell and press  Ctrl  +  C  .

Using the Paste Special Feature to Copy Comments

➤ Select the destination cell, right-click on it, and select Paste Special. Or, press  Ctrl  +  Alt  +  V  .

Using the Paste Special Feature to Copy Comments

➤ To copy the comment in multiple cells, right-click on the destination range and choose Paste Special.

Using the Paste Special Feature to Copy Comments

➤ From the Paste Special dialog box, select Comments and Notes and press Ok. Repeat the steps for the remaining comments.

Using the Paste Special Feature to Copy Comments

➤ Here are the copied comments in the destination cells:

Using the Paste Special Feature to Copy Comments

➤ Below is the final result for multiple cells.


3

Custom VBA Macro to Copy Comments to One or Multiple Cells

Another easy way to automate comment copying is to use a custom VBA macro. Follow the steps given below to copy comments from one cell to another cell or a cell range.

➤ To add the Developer tab to the top ribbon, go to the File tab >> More >> Options.

Custom VBA Macro to Copy Comments to One or Multiple Cells

➤ Select Customize Ribbon and check the Developer box. Press Ok.

Custom VBA Macro to Copy Comments to One or Multiple Cells

➤ Now, click on the Developer tab and choose Visual Basic from the Code group.

Custom VBA Macro to Copy Comments to One or Multiple Cells

➤ When the VBA Editor opens, press the Insert tab and select Module.

Custom VBA Macro to Copy Comments to One or Multiple Cells

➤ Paste the following code in the module box:

Sub CopyComments()
    ' This macro copies both modern (threaded) and classic comments from a
    ' user-selected source range to a user-selected destination range.
    Dim sourceRange As Range
    Dim destRange As Range
    Dim sourceCell As Range
    Dim destCell As Range
    Dim i As Long
    ' The On Error statement handles cases where the user clicks "Cancel"
    ' on the input boxes, which would otherwise cause a runtime error.
    On Error GoTo Canceled
    ' Prompt the user to select the source range.
    Set sourceRange = Application.InputBox( _
        Prompt:="Select the source cell(s) with comments to copy.", _
        Title:="Select Source Range", _
        Type:=8)
    ' Prompt the user to select the destination range.
    Set destRange = Application.InputBox( _
        Prompt:="Select the destination cell(s) to paste comments.", _
        Title:="Select Destination Range", _
        Type:=8)
    ' Check if the user selected ranges with the same number of cells.
    ' This is a critical check to ensure the copy operation works correctly.
    If sourceRange.Cells.Count <> destRange.Cells.Count Then
        MsgBox "The number of cells in the source and destination ranges must be the same.", vbCritical, "Error"
        Exit Sub
    End If
    ' Loop through each cell in the source range and copy its comment to the
    ' corresponding cell in the destination range. The loop runs for as many
    ' times as there are cells in the source range.
    For i = 1 To sourceRange.Cells.Count
        Set sourceCell = sourceRange.Cells(i)
        Set destCell = destRange.Cells(i)
        ' Before adding a new comment, clear any existing comments on the destination cell.
        ' This handles both classic and threaded comments.
        If Not destCell.CommentThreaded Is Nothing Then
            destCell.CommentThreaded.Delete
        End If
        If Not destCell.Comment Is Nothing Then
            destCell.ClearComments
        End If
        ' First, check for a new-style (threaded) comment.
        If Not sourceCell.CommentThreaded Is Nothing Then
            ' Add a new threaded comment to the destination cell.
            destCell.AddCommentThreaded Text:=sourceCell.CommentThreaded.Text
        ' If no threaded comment exists, check for a classic comment.
        ElseIf Not sourceCell.Comment Is Nothing Then
            ' Add a new classic comment to the destination cell.
            destCell.AddComment Text:=sourceCell.Comment.Text
            ' These lines are optional. Uncomment them if you want to also
            ' copy the author name and the visibility setting of the comment.
            ' destCell.Comment.Author = sourceCell.Comment.Author
            ' destCell.Comment.Visible = sourceCell.Comment.Visible
        End If
    Next i
    MsgBox "Comments copied successfully!", vbInformation, "Complete"
    Exit Sub
Canceled:
    ' This section runs if the user clicks "Cancel" on either InputBox.
    ' It prevents a runtime error and provides a friendly message.
    MsgBox "Operation canceled by user.", vbExclamation, "Canceled"
End Sub

➤ Press  F5  to run the macro or click on the Run tab >> Run Sub/UserForm.

➤ As Excel prompts you to enter the source cell containing the comment, manually type the cell or range reference or go back to the Excel tab and highlight it in the Select Source Range box. Press Ok.

➤ In the Select Destination Range dialog box, manually type or highlight the destination cell(s) and press Ok.

➤ Here’s the final result:


4

Custom VBA Macro to Extract All Comments from a Worksheet

If you want to copy all the comments from a worksheet to paste them in a different worksheet, use a custom VBA macro. Here are the steps for it:

➤ Click on the Developer tab and select Visual Basic.
➤ From the VBA Editor, choose the Insert tab >> Module.
➤ In the new blank box, paste the following code.

Sub ExportCommentsToSheet()
    Dim ws As Worksheet
    Dim exportSheet As Worksheet
    Dim cell As Range
    Dim threadedComment As CommentThreaded
    Dim outputText As String
    Dim formatChoice As Variant
    Dim includeAddress As VbMsgBoxResult
    Dim separator As String
    Dim rowCounter As Long
    Dim tempText As String
    Set ws = ActiveSheet
    ' Prompt user for format choice
    formatChoice = Application.InputBox( _
        Prompt:="Choose how to format the exported comments:" & vbCrLf & _
                "1 = One comment per row (Excel-friendly)" & vbCrLf & _
                "2 = One comment per line" & vbCrLf & _
                "3 = Separate with TAB" & vbCrLf & _
                "4 = Separate with COLON" & vbCrLf & _
                "5 = One comment per paragraph (blank line between)", _
        Title:="Comment Export Format", Type:=1)
    If formatChoice < 1 Or formatChoice > 5 Then
        MsgBox "Invalid option. Cancelling.", vbExclamation
        Exit Sub
    End If
    ' Prompt to include cell addresses
    includeAddress = MsgBox("Do you want to include the cell addresses with the comments?", vbYesNo + vbQuestion, "Include Cell Addresses")
    ' Determine separator based on format
    Select Case formatChoice
        Case 1 ' Rows (each cell in its own column)
            separator = vbTab
        Case 2 ' Lines
            separator = vbCrLf
        Case 3 ' Tab
            separator = vbTab
        Case 4 ' Colon
            separator = ": "
        Case 5 ' Paragraphs
            separator = vbCrLf & vbCrLf
    End Select
    ' Create new worksheet
    Set exportSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    exportSheet.Name = "Exported_Comments"
    rowCounter = 1
    ' Loop through legacy comments (Notes)
    For Each cell In ws.UsedRange.Cells
        If Not cell.Comment Is Nothing Then
            tempText = ""
            If includeAddress = vbYes Then
                tempText = cell.Address(False, False) & separator
            End If
            tempText = tempText & cell.Comment.Text
            ' Output based on format
            Select Case formatChoice
                Case 1 ' One row: address in A, comment in B
                    exportSheet.Cells(rowCounter, 1).Value = IIf(includeAddress = vbYes, cell.Address(False, False), "")
                    exportSheet.Cells(rowCounter, 2).Value = cell.Comment.Text
                Case Else
                    exportSheet.Cells(rowCounter, 1).Value = tempText
            End Select
            rowCounter = rowCounter + 1
            If formatChoice = 5 Then rowCounter = rowCounter + 1 ' Add blank line
        End If
    Next cell
    ' Loop through modern threaded comments
    For Each threadedComment In ws.CommentsThreaded
        tempText = ""
        If includeAddress = vbYes Then
            tempText = threadedComment.Parent.Address(False, False) & separator
        End If
        tempText = tempText & threadedComment.Text
        Select Case formatChoice
            Case 1 ' One row
                exportSheet.Cells(rowCounter, 1).Value = IIf(includeAddress = vbYes, threadedComment.Parent.Address(False, False), "")
                exportSheet.Cells(rowCounter, 2).Value = threadedComment.Text
            Case Else
                exportSheet.Cells(rowCounter, 1).Value = tempText
        End Select
        rowCounter = rowCounter + 1
        If formatChoice = 5 Then rowCounter = rowCounter + 1 ' Add blank line
    Next threadedComment
    MsgBox "Comments exported to a new sheet: '" & exportSheet.Name & "'", vbInformation
End Sub

➤ Press  F5  or click the Run tab >> Run Sub/UserForm.

Custom VBA Macro to Extract All Comments from a Worksheet

➤ When prompted, select any of the following options depending on where you want to paste the copied comments:

  1. One comment per row (Excel-friendly)
  2. One comment per line
  3. Separate with TAB
  4. Separate with COLON
  5. One comment per paragraph (blank line between)

Custom VBA Macro to Extract All Comments from a Worksheet

➤ Now, choose an option depending on whether you want to copy the comments with the cell references or not.

Custom VBA Macro to Extract All Comments from a Worksheet

➤ Here are all the comments from our worksheet copied into a new worksheet:

Custom VBA Macro to Extract All Comments from a Worksheet


Frequently Asked Questions

How to find cells with comments?

Look for a small purple or red triangle in the top-right corner of the cell, which indicates a comment. You can also use the Go To Special feature to highlight all the cells with comments at once. Press  Ctrl  +  G  and click Special. Choose Comments (or Notes) and press Ok.

How do I print all comments in Excel?

Go to the Page Layout tab and click on the Page Setup dialog launcher (small arrow). Under the Sheet tab, find Comments (or Notes) and choose As Displayed on Sheet to print comments exactly where they appear. To print all comments in a list after the sheet data, select  At End of Sheet instead. Click Ok and then print your sheet as usual.

Can you track comments in Excel?

Yes, you can track threaded comments that automatically record the commenter’s name and time. You can view the conversation history by clicking the Comment icon (purple or red triangle) in a cell. To track comment changes over time, you can use Track Changes (in older Excel versions) or version history in OneDrive/SharePoint if your workbook is saved online.


Concluding Words

Most methods of copying a comment in Excel work on one comment at a time. If you copy multiple comments and use Paste Special, the comments will be copied with the same row differences. However, if you want to copy all comments from a worksheet, do it with a custom VBA macro for easy and quick extraction.

ExcelInsider Team
We will be happy to hear your thoughts

Leave a reply

Excel Insider
Logo