- ベストアンサー
Excelでのデータ挿入方法とは?
- Excelを使用して値段の項目を実際の野菜の右に挿入する方法が知りたいです。最近、項目が増えていて手間です。
- 野菜の数が異なるため、値段の右に正しく挿入する方法を教えてください。
- 野菜のジャンルの切り替わりごとに、明確な区切りがないため、正確に値段を挿入する方法をお教えください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
必ず破線があり、破線の上には4つの項目(野菜のジャンル、値段、産地、特徴)があると言う前提でマクロを作って見ました。 Sub Sample() Dim nLast As Long Dim nLLast As Long nLast = Range("A1").End(xlDown).Row 'データの一番下 nLLast = nLast For i = nLast To 5 Step -1 '下から上へ If Cells(i, 1) = "--------------------" Then '破線の3行上の「値段」を野菜のB列に貼り付け Range(Cells(nLLast, 2), Cells(i + 1, 2)).Value = Cells(i - 3, 1).Value nLLast = i - 5 End If Next i End Sub
その他の回答 (4)
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、元データがSheet1のA列に並んでいて、作り直したデータをSheet2のA列に表示させるものとします。 又、Sheet3のA列を作業列として使用するものとします。 まず、Sheet3のA1セルに次の数式を入力して下さい。 =IF(OR(ISNUMBER(SUBSTITUTE(INDEX(Sheet1!$A:$A,ROW()),"円",)+0),INDEX(Sheet1!$A:$A,ROW())="時価",INDEX(Sheet1!$A:$A,ROW())="処分価格"),ROW(),"") 次に、Sheet3のA1セルをコピーして、Sheet3のA2以下に貼り付けて下さい。 次に、Sheet2のA1セルに次の数式を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",INDEX(Sheet1!$A:$A,ROW())&IF(COUNT(Sheet3!$A$1:$A1)=0,"",IF(OR(ROW()<VLOOKUP(99^9,Sheet3!$A$1:$A1,1)+4,ISNUMBER(Sheet3!$A2)),""," "&INDEX(Sheet1!$A:$A,VLOOKUP(99^9,Sheet3!$A$1:$A1,1))))) 次に、Sheet2のA1セルをコピーして、Sheet2のA2以下に貼り付けて下さい。 これで、Sheet2のA列に各野菜の名前の後に、各価格が付いたリストが表示されます。
お礼
ありがとうございます。 実際にexcelで試してみたところ、 もともとの内容と同じデータのみ、表示されました。 私の条件の提示が不十分だっためだと思います。 ただ、こちらの関数を分析すれば、 関数のみでやりたいことも実現できるのではないかと感じました。 今後の参考になります。 ご回答いただき、ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
>excelの質問になるのかどうか、わからないのですが データは何処になるのか。エクセルのシートにあるのではないのか? ーー データ例は出ているが、目的形(=完成形)が書いてない。 野菜A 50円 産地 特徴 -------------------- だいこん 50円 にんじん 50円 たまねぎ 50円 のようにしたいのかどうか。 ーーー 破線から野菜XXまで(野菜XX以外にもあるようだが多数か、10種ぐらいか)を品物として同じ価格をセットするで良いのか。 価格の行を判別する手がかりは無いのか。 ーー 色々あるがエクセルのデータであればVBAで処理しないと難しいと思うが、VBAなど経験内のだろうね。 であれば質問者には出来ないと思う。やれそうな人に頼むほか無い。 その前にデータ様式の統一が必要かもしれない。
お礼
ご指摘ありがとうございます。 >データ例は出ているが、目的形(=完成形)が書いてない。 おっしゃる内容のとおりです。 説明不足で申し訳ありません。 これを機会にVBAを勉強してみようと思います。 ご回答いただき、ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
野菜に値段をわざわざコピーする意味がよく分かりませんが、A列には固定データ(カテゴリ項目)と可変データ(野菜名)が混入しており、且つその区分けが出来ないので関数・マクロでも不可能と思う。 固定データ、可変データの区分けを再考した方が良いと思う。 例えば、A列は固定名、B列に可変名、C列に値段ならば関数でも設定可能です。
お礼
確かに、データのあり方がそもそも問題だと思います。 ご回答いただき、ありがとうございました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>・野菜のジャンルが切り替わるときの区別がない (下記例でいえば、”野菜A”の終わりは「たまねぎ」ですが、 そのあとにすぐ、新しいジャンル”野菜B”が始まる。明確な区切りがない) データの切れ目にエクセルが(人間が)判断できる基準がないと、基本的にどのような方法でも処理することは不可能です。 例示のデータが正しいなら「野菜???」と書かれたセルがデータの切れ目になると思うのですが、このような基準があれば関数などで処理することも可能です。 >・値段に必ず円が入るとは限らない (”時価”とか”処分価格”とかの言葉が入る時があります) また、ジャンル名も野菜A,B、C・・・だけではありません 値段には実際にどのようなデータが入力されているのでしょうか? 前後に数字以外のデータがあってもその数字部分を取得したいという意味でしょうか? ジャンル名の先頭文字に「野菜」がつかないデータもあるという意味でしょうか? 現在のデータベースのシートのレイアウトを使用されている理由がいま一つわからないのですが、このようなケースでは「例えば」ではなく実際に入力されているデータを例示しないと(後出しで条件を追加すると)、みなさんの回答が無駄になってしまうので、質問の際には気を付けるようにしましょう。
お礼
まずは、質問内容が不十分であったことをお詫び申し上げます。 おっしゃいますように、 せっかく回答していただいても条件が後だしでは 無駄になってしまいます。今後気をつけたいと思います。 >前後に数字以外のデータがあってもその数字部分を取得したいという意味でしょうか? おっしゃるとおり、数字以外のデータでも取得したいと考えておりました。 >ジャンル名の先頭文字に「野菜」がつかないデータもあるという意味でしょうか? 通常は値段の~円、なのですが、さまざまな日本語漢字、ひらがなが入ることがあります。 >現在のデータベースのシートのレイアウトを使用されている理由 実は、会社で新しいシステムを入れたのですが、 インポートする元データは古いシステムから出しています。 今回の作業は古いシステムで出力されたデータを、新しいシステムで 使用するための返還作業です。そもそもこういう運用自体が問題なのですが… ご回答いただき、ありがとうございました。
お礼
ありがとうございます。 教えていただいた内容で実現できました。 ありがとうございました。