- ベストアンサー
エクセル初心者です。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
いろんな関数があって、いろんなことができますが、 関数(を使った数式)を入力したセルの値しか扱うことは出来ません。 配置を移動したりするのは、マクロじゃないと無理です。 質問者様がやりたいことは、以下のマクロでできます。 Sub test() Dim r As Long For r = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If Cells(r, 1).Value <> Cells(r - 1, 1).Value Then Rows(r).Insert Next r End Sub
その他の回答 (5)
- KURUMITO
- ベストアンサー率42% (1835/4283)
A列のA2セルから下方にデータがあるとします。 B2セルには次の式を入力して下方にオートフィルドラッグします。A9セルまでデータがあるとしたらその倍のセルまでA18セルまでドラッグコピーします。 =IF(ROW(A1)=1,1,IF(AND(A2<>"",COUNTIF(A$2:A2,A2)=1),MAX(B$1:B1)+2,IF(AND(A2<>"",COUNTIF(A$2:A2,A2)>1),MAX(B$1:B1)+1,IF(AND(A2="",ROW(A1)<MATCH("ー",A:A)),"",IF(OR(COUNTIF(B$1:B1,ROW(A1)+1-MATCH("ー",A:A))>0,(ROW(A1)+1-MATCH("ー",A:A))>MAX(B$1:B1)),"",ROW(A1)+1-MATCH("ー",A:A)))))) ここでMATCH("ー",A:A)の関数はA列で文字列が入力されている最下段のセルの行数を求めるものです。 B列を選択してコピーし、C1セルをアクティブセルにして「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。C1セルがアクティブセルのままで昇順での並び替えを行います。 これによってA列には空の行が入った並びが出来上がります。 仮にその空の行にデータを入力した場合には空の行が無くなってしまいますが、再びB列を選択してからC列に形式を選択して貼り付けをし「値」にチェックをして貼り付けしてから昇順で並べることで再び空白の行を入れることができます。
お礼
ご教授 ありがとうございました。 教えていただいた方法も含め、色々なアプローチがあるものだと勉強になりました。 これを機会に(特にIF関数)色々と学んでゆきたいと思います。 お時間いただき アドバイスしていただいて本当にありがとうございました!!
- layy
- ベストアンサー率23% (292/1222)
2行目と3行目で変わっているのは数式で求めることができますから、B2に○か何かをつけます。 ここまでは出来るとして 後は、B列に○があればその下に1行追加する、となりますが、マクロやVBAの対応のが有効です。 ○見つかったら行追加、次の○見つかったら行追加、の繰り返しです。ここはマクロやVBAに頼らず、一旦CSVに落として作業しても出来そうですが。 参考になれば。
お礼
こんにちは、アドバイスありがとうございます。 CSVに落とす方法もあったのですね!! 参考になりました。 ありがとうございます!!!
- qyukip
- ベストアンサー率40% (13/32)
A列自体にとはいきませんが、A列のデータを他の列に表示することなら関数でも可能です。 例えばB列に表示する場合 B1→=A1 B2以降→=IF(OFFSET($A2,-COUNTBLANK($B$1:$B1),0)<>B1, IF(B1="",OFFSET($A2,-COUNTBLANK($B$1:$B1)+1,0),""), OFFSET($A2,-COUNTBLANK($B$1:$B1),0)) もしA列だけで行いたいのであればマクロで実行すべきですし、 この方法で行うのであればA列を非表示にしてしまえば問題ないかと思います。
お礼
ご回答、感謝いたします!! 早速 試させていただだいたところ、上手く実行できました。 教えていただいたIF関数を含め、マクロもこれを機会に勉強してみたいと思います。 言葉足らずではありますが、大変ありがとうございました!!
私みたいなマクロ音痴の「初心者」向けの回答例です。添付図参照 1.列Aの前に1列挿入 2.セル A1 から下方にズズーッと(列Bのデータ下端まで。添付図ではセル A6 まで)昇 順の連続数値を入力 3.1行空けて、セル A8 に次の配列数式を入力して、此れを下方にズズーッと(#NUM!エ ラーが出るまで)ドラッグ&ペースト {=SMALL(IF(B$1:B$6=B$2:B$7,"",A$1:A$6),ROW(A1))} 4.列A全体を選択したままで[コピー]→[値の貼り付け]を実行 5.列A、Bを選択して、[最優先されるキー]を列Aに指定して、[昇順]に[並べ替え] 7.列Aを削除
お礼
ご丁寧に、画像までつけていただいて大変ありがとうございます!! 早速試してみました。 こういった方法もあるのかと、勉強になりました。 重ね重ね、ありがとうございました!!!
ワークシートのセルの内容を下にシフトしたり、 セルを動かすような操作は、マクロでないと無理ですよ。 ** 関数は固定された範囲のものを計算処理することしかできませんよオ~。
お礼
早々のご回答、感謝いたします!! そうですか、関数だと無理なようですね。 マクロを含め他の方法を検討してみます。 ありがとうございました。
お礼
ご教授、大変ありがとうございました。 教えていただいたように実行したところ、びっくり!! 完璧でした。 これを機会に、マクロを勉強してゆきたいと思います!! 大変ありがとうございました。 感謝いたします!!