ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Question about Concatenate and IIF (https://www.excelbanter.com/excel-programming/357480-question-about-concatenate-iif.html)

jack

Question about Concatenate and IIF
 
Hello,

I have a table that has three fields across (ID#, Q01, Notes). Under the
ID# column I have several customer IDs: 1, 2, 3, etc... And under the Q01
column is the response to a customer question in which they could choose
multiple answers: A, B, C, D, etc...

The problem arises in that if a customer has multiple answers, they are on a
separate line. For example, if ID# 1 answered A, B, and C the first three
rows would be:

1 A
1 B
1 C

I would like to make one row per customer ID#. That way I have one row per
ID#, for example:

1 A,B,C

I believe I need to use an IIF function and Concatenate, but I'm not
certain. Any thoughts?

Thank you in advance,
Jack

Mark Lincoln

Question about Concatenate and IIF
 
Is this a one-time-only modification to the workbook? If so, I have a
method to change the structure using a couple of helper columns. I'd
have to do more work to make reusable VBA code for the same purpose.


jack

Question about Concatenate and IIF
 
Yes, this is a one-time modification.

Thank you,
Jack

"Mark Lincoln" wrote:

Is this a one-time-only modification to the workbook? If so, I have a
method to change the structure using a couple of helper columns. I'd
have to do more work to make reusable VBA code for the same purpose.



Mark Lincoln

Question about Concatenate and IIF
 
Okay then, here's what I did.

I'm assuming your customer IDs are in Column A and start in Row 2, with
your responses in Column B and notes in Column C.

First of all, sort by Customer ID.

Then in D2 enter the following formula:

=IF(A2<A3,A2,"")

and drag it down to the end of your customer IDs. This will duplicate
the ID for each customer on its last row.

In E2, enter:

=B2

and in E3, enter:

=IF(A3=A2,E2&","&B3,B3)

and drag it down to the last customer ID row.

In cell F2, enter:

=IF(C2<"",C2,"")

In cell F3 enter:

=IF(A3=A2,CONCATENATE(IF(F2<"",F2,""),IF(AND(F2< "",C3<""),",",""),IF(C3<"",C3,"")),IF(C3<"",C3, ""))

and drag it down to your last row of data. (This big formula keeps
zeros from showing up in your Notes field if there are no notes.)

Select the cells in columns D through F from row 2 to the last row with
data, click Copy, then click on Edit|Paste Special and choose Values
under Paste in the Paste Special dialog.

Clear the data in columns A through C. Sort Columns D through F by
Column D. Now you have a list of customer IDs, each with all their
responses and any notes, plus data below that has already been
dupicated. Select the cells in those columns that don't have Customer
IDs and Clear. Then drag your remaining data over to columns A through
C. Done!


Mark Lincoln

Question about Concatenate and IIF
 
I forgot to mention...

MAKE A BACKUP COPY OF THE WORKBOOK FIRST!

Just in case.... :-)


jack

Question about Concatenate and IIF
 
PERFECT! Thank you very much!

"Mark Lincoln" wrote:

I forgot to mention...

MAKE A BACKUP COPY OF THE WORKBOOK FIRST!

Just in case.... :-)



Mark Lincoln

Question about Concatenate and IIF
 
You're very welcome! Thanks for the feedback.



All times are GMT +1. The time now is 05:06 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com