アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルの 列のデータの内容が変わったら、次の列に表示できるようにした

エクセルの 列のデータの内容が変わったら、次の列に表示できるようにしたい。

すみません、説明すると難しいのですが。
したいことの例を下にかいてみます。

例)
↓こんなデータがあります。

A列   B列
○○銀行 ××支店
○○銀行 △△支店
○○銀行 □□支店
▽▽銀行 ■■支店
▽▽銀行 ●●支店

↓こうしたい。
A列   B列  
○○銀行 ▽▽銀行
××支店 ■■支店
△△支店 ●●支店
□□支店

※ 本当のデータは1000件以上あります。

いろいろインターネットでも調べてみましたが、わからなく。
もしいい案がある方は教えていただきたいんです。

できれば、関数で出来たらいいと思うんですが、
マクロしかできないのであれば、マクロでどうしたらいいのかも教えていただきたいんです。

マクロも人のを真似して使用できる程度の力しかありません。
でも本当に困っています。
すみませんが、よろしくお願いします。

A 回答 (4件)

sheet1に元データがあるとして


sheet2へ出力します
sheet1の元データはA列(銀行名)でソートしておくこと

Sub test()
Dim i As Long, j As Long
Dim vDATA As Variant
j = 1
With Worksheets("sheet1")
vDATA = .Range("a1", .Cells(Rows.Count, 2).End(xlUp))
End With
With Worksheets("sheet2")
For i = 1 To UBound(vDATA)
If i = 1 Then
.Cells(1, 1).Value = vDATA(1, 1)
.Cells(2, 1).Value = vDATA(1, 2)
ElseIf .Cells(1, j).Value = vDATA(i, 1) Then
.Cells(Rows.Count, j).End(xlUp).Offset(1).Value = vDATA(i, 2)
Else
j = j + 1
.Cells(1, j).Value = vDATA(i, 1)
.Cells(2, j).Value = vDATA(i, 2)
End If
Next i
End With
End Sub

参考まで
    • good
    • 0
この回答へのお礼

ありがとうございます!!

マクロを張り付けてみたら、まさにやりたいとおりにできました!
今回はこのマクロを使用することにしました。

もし今後に変更のあったときのために
今はこのマクロが何しているのか読んでいる最中です。

とても勉強になりました。ありがとうございます。
また何かわからないことがあれば力をお貸しくださるとうれしいです。

お礼日時:2010/02/13 16:54

こんばんは!


参考になるかどうか判りませんが・・・
↓の画像で説明させていただきます。
Sheet1のデータをSheet2に表示させています。
Sheet1に作業用の列を2列設けています。

作業列C2セルに
=IF(COUNTIF($A$2:A2,A2)=1,ROW(A1)*1000+COLUMN(A1),"")
という数式を入れ、列方向と行方向にオートフィルでずぃ~~~!っとコピーします。

そして、Sheet2のA2セルに
=IF(ROUNDUP(COUNT(Sheet1!$C$2:$D$1000)/2,0)<ROW(A1),"",INDEX(Sheet1!$A$2:$B$1000,INT(SMALL(Sheet1!$C$2:$D$1000,ROW(A1))/1000),MOD(SMALL(Sheet1!$C$2:$D$1000,ROW(A1)),1000)))

B2セルに
=IF(ROUNDDOWN(COUNT(Sheet1!$C$2:$D$1000)/2,0)<ROW(A1),"",INDEX(Sheet1!$A$2:$B$1000,INT(SMALL(Sheet1!$C$2:$D$1000,ROW(A1)+COUNTIF($A$2:$A$1000,"?*"))/1000),MOD(SMALL(Sheet1!$C$2:$D$1000,ROW(A1)+COUNTIF($A$2:$A$1000,"?*")),1000)))

という数式を入れA2・B2セルを範囲指定し、B2セルのフィルハンドルで下へコピーすると
画像のような感じになります。

以上、参考になれば幸いですが
的外れなら読み流してくださいね。

※ 余談になりますが、
実はこの数式の中で「数式は入っていて空白セルをカウントしない場合」の関数で悩んでいましたが、
他の回答の中の「KURUMITOさま」の回答が大変参考になりました。
数式の中にその回答方法も利用させていただいています。
私も他の方の回答を参考に色々勉強させてもらっています。

この場を借りてお礼申し上げます。
どうも失礼しました。m(__)m
「エクセルの 列のデータの内容が変わったら」の回答画像4
    • good
    • 0
この回答へのお礼

おお!画像付きで、詳しくありがとうございます!

今は家ですので、職場で試させていただきたいと思います!

本当にみなさんがいろいろ意見いただけるので、私もいつも勉強しています^^

お礼が遅くなってもと思ったので、まだ実行していませんが書かせていただきました。

本当にありがとうございます!

お礼日時:2010/02/13 17:02

一例です。


Sheet1のデータをsheet2に並び替えします。
(1)sheet1のA列を選択→データ→フィルタ→フィルタオプションの設定→抽出先は選択範囲内を選択、重複するレコードは無視するを選択→OK
(2)抽出されたA列のA2:Axx範囲をコピー→sheet2のA1を選択、右クリックで形式を選択して貼り付け→行列を入れ替えるを選択→OK
(3)Sheet2のA2に=IF(COUNTIF(Sheet1!$A:$A,A$1)>=ROW(A1),INDEX(Sheet1!$B:$B,SMALL(IF(Sheet1!$A$1:$A$2000=A$1,ROW(Sheet1!$A$1:$A$2000),9999),ROW(A1))),"")を入力、入力完了時にshift+ctrl+enterキーを同時押下
(4)A2のセルを縦横に必要分コピー
    • good
    • 0
この回答へのお礼

書かれている通りに、操作してみたらできました!!

やり方もいろいろあるんですね><

自分の力の無さが…、とても勉強になりました!

ありがとうございます!

お礼日時:2010/02/13 16:59

Sheet1


    A     B
1  ○○銀行 ××支店
2  ○○銀行 △△支店
3  ○○銀行 □□支店
4  ▽▽銀行 ■■支店
5  ▽▽銀行 ●●支店
6  ◇◇銀行 ◆◆支店
7  ☆☆銀行 ▼▼支店
8  ☆☆銀行 ◎◎本店
9  ☆☆銀行 ▲▲支店
10 ☆☆銀行 ★★支店

Sheet2
   A     B     C     D
1 ○○銀行 ▽▽銀行 ◇◇銀行 ☆☆銀行
2 ××支店 ■■支店 ◆◆支店 ▼▼支店
3 △△支店 ●●支店      ◎◎本店
4 □□支店           ▲▲支店
5                ★★支店

Sheet2 において、
1.セル A2 に次の[条件付き書式]を設定
   数式が    =ISERROR(A2)
   フォント色  白
2.セル A2 に次の配列数式を入力して、此れを右方および下方にズズ
  ーッとドラッグ&ペースト
   {=INDEX(Sheet1!$B$1:$B$19,SMALL(IF((Sheet1!$A$1:$A$20=A$1)*(ROW(A$1:A$20)),(Sheet1!$A$1:$A$20=A$1)*(ROW(A$1:A$20)),""),ROW(A1)))}
    • good
    • 0
この回答へのお礼

ありがとうございます!

この通りに張り付けてみたつもりですが、「#~」のエラーがでてしまいました。
私のやり方がうまくいかなかったのかもしれません。

こういうやり方もあることが知れました!
本当にありがとうございました。

お礼日時:2010/02/13 16:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!