• 締切済み

仕事の効率化

はじめまして。旅行の仕事で商品企画を行っているものです。 商品の値付けを簡単なエクセルで原価管理を行っているのですが 下記のようなマクロで変換できるような方法があれば教えてほしいです。 例えば下記の出発日のような値段設定をしたとします。 2014/04/01 ¥12000 2014/04/02 ¥15000 2014/04/03 ¥16000 2014/04/04 ¥12000 2014/04/05 ¥12000 2014/04/06 ¥16000 上記をどうにかして ¥12000 2014/04/01,2014/04/04-05 ¥15000 2014/04/02 ¥16000 2014/04/03,2014/04/06 という風に、エクセルの1つのセルの中に同じ値段設定の日付をまとめたいのが今回の趣旨です アドバイスいただけると助かります

みんなの回答

  • googoo900
  • ベストアンサー率44% (82/184)
回答No.3

日付を1つのセルにいれる方法です。 1.添付図のようにA~E列に日付のデータをいれます。(ここでは金額のデータは考慮していません) 2.書式が日付のままでは困難なので、文字列に変換します。F~J列   式  =IF(C9<>"",TEXT(C9,"yyyy/mm/dd"),"")   F8セルに貼りつける 3.文字列に変換した日付を1つのセルにまとめます。これが欲しい答えです。 K列   式 =LEFT(H9&","&I9&","&J9&","&K9&","&L9,COUNTBLANK(H9:L9)*-11+54)   K8セルに貼りつける 出発日がMAX5日までに対応させています。それ以上なら修正する必要があります。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

関数の組み合わせでも処理できます。 但し、出発日を1つのセルに列記するのではなく料金のセルの右側に列記するようにします。 貼付画像で説明すると以下のようになります。 D列には料金区分を抽出します。 D2=IFERROR(SUMPRODUCT(SMALL(B$2:B$10,COUNTIF(B$2:B$7,"<="&MAX(D$1:D1))+1)),"") E列からH列までは出発日をA列に記載されたの順に抽出しています。 E2=IF(COUNT(D2),IFERROR(INDEX($A$1:$A$10,SUMPRODUCT(LARGE(($B$2:$B$10=$D2)*ROW($B$2:$B$10),COUNTIF($B$2:$B$10,$D2)-COLUMNS($E2:E2)+1)),1),""),"") E2セルを右にコピーすれば出発日が順に抽出できます。 D2からH2までを選択して下へ必要数コピーします。 日付のセルは表示形式を日付にしてください。 上記の数式はExcel 2007以降のバージョンに対応しています。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! Sheet1のデータをSheet2に表示するようにしてみました。 ↓の画像で左側がSheet1、右側がSheet2とします。 標準モジュールです。 Sub Sample1() Dim i As Long, c As Range, wS As Worksheet Set wS = Worksheets("Sheet2") wS.Cells.ClearContents With Worksheets("Sheet1") .Range("B:B").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True wS.Range("A:A").Sort key1:=wS.Range("A1"), order1:=xlAscending, Header:=xlYes For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row Set c = wS.Range("A:A").Find(what:=.Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole) .Cells(i, "A").Copy wS.Cells(c.Row, Columns.Count).End(xlToLeft).Offset(, 1) Next i End With End Sub こんな感じではどうでしょうか?m(_ _)m

関連するQ&A