Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 67
Default Update cells at other sheet

I really need an excel guru to help to solve my problem.

The situation is like this:

Sheet1.ColumnB Sheet2.ColumnB Sheet2.ColumnC

Canada Canada 23
Germany Germany 45
Russia Russia 32
Japan Japan 22

User are free to change or delete/insert row(s) at Sheet1.ColumnB, and
Sheet2.ColumnB must follow whatever value in Sheet1.ColumnB, the
problem
I have is I don't know how to make the value in Sheet2.ColumnC to keep
following the Sheet2.ColumnB.
For example, if I insert USA between Canada and Germany, I want the
result in Sheet2 as :

Sheet1.ColumnB Sheet2.ColumnB Sheet2.ColumnC

Canada Canada 23
USA USA
Germany Germany 45
Russia Russia 32
Japan Japan 22


And Sheet2.ColumnC for USA will be left as blank and user can enter the
value later.

Appreciate your help.

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 318
Default Update cells at other sheet

Hi Broogle,

Use the following formula in Cell B1 of Sheet 2

=IF(INDIRECT("Sheet1!" & ADDRESS(ROW(),2))="","",INDIRECT("Sheet1!" &
ADDRESS(ROW(),2)))

and the following formula for Cell C1 of Sheet 2

=IF(ISNA(LOOKUP(B1,{"a","b","c","d","e","f","g"},{ 1,2,3,4,5,6,7})),"",LOOKUP(B1,{"a","b","c","d","e" ,"f","g"},{1,2,3,4,5,6,7}))

Just replace the "a","b" etc with country names and 1,2,3, etc with values.
Drag down as many rows as you like

Alok Joshi
"broogle" wrote:

I really need an excel guru to help to solve my problem.

The situation is like this:

Sheet1.ColumnB Sheet2.ColumnB Sheet2.ColumnC

Canada Canada 23
Germany Germany 45
Russia Russia 32
Japan Japan 22

User are free to change or delete/insert row(s) at Sheet1.ColumnB, and
Sheet2.ColumnB must follow whatever value in Sheet1.ColumnB, the
problem
I have is I don't know how to make the value in Sheet2.ColumnC to keep
following the Sheet2.ColumnB.
For example, if I insert USA between Canada and Germany, I want the
result in Sheet2 as :

Sheet1.ColumnB Sheet2.ColumnB Sheet2.ColumnC

Canada Canada 23
USA USA
Germany Germany 45
Russia Russia 32
Japan Japan 22


And Sheet2.ColumnC for USA will be left as blank and user can enter the
value later.

Appreciate your help.


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 67
Default Update cells at other sheet

Hi Alok,
It should be done in macro, because the data could be more than 100, I
can't fit them in formula.
Thank you anyway.

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 318
Default Update cells at other sheet

Broogle,

Here is the code .. you might have to revise some
Add all the following into Module1

Global gCol As New Collection

Sub UpdateCollection()

Dim r&
With Sheet2
For r = 1 To .UsedRange.Rows.Count
If .Cells(r, 2).Value < "" Then
On Error Resume Next
gCol.Add .Cells(r, 3).Value, .Cells(r, 2).Value
On Error GoTo 0
End If
Next r
End With
End Sub
Sub UpdateSheet()

Dim r&
With Sheet2
For r = 1 To .UsedRange.Rows.Count
If .Cells(r, 2).Value < "" Then
On Error Resume Next
.Cells(r, 3).Value = gCol(.Cells(r, 2).Value)
On Error GoTo 0
End If
Next r
End With

End Sub
Sub SynchronizeSheets()

Dim r&
With Sheet2
'Clear the two columns
With .Range(.Cells(1, 2), .Cells(.UsedRange.Rows.Count, 3))
.ClearContents
End With
For r = 1 To Sheet1.UsedRange.Rows.Count
.Cells(r, 2).Value = Sheet1.Cells(r, 2).Value
Next r
End With

End Sub

Add this bit in the Sheet1_Change event

Private Sub Worksheet_Change(ByVal Target As Range)
SynchronizeSheets
UpdateSheet
End Sub

And add the following in the Workbook_Open event
Private Sub Workbook_Open()
UpdateCollection
End Sub

Hope this works for you.

Alok Joshi

"broogle" wrote:

Hi Alok,
It should be done in macro, because the data could be more than 100, I
can't fit them in formula.
Thank you anyway.


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 67
Default Update cells at other sheet

Hi Alok,

When I tried to insert USA between Canada and Germany, it only works
for Sheet2.ColumnB and the position of Sheet2.ColumnC remain the same,
all numbers didn't align with the changes. Could you please help me to
modife the macro.
Thanks a million.



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 318
Default Update cells at other sheet

Hi Broogle,

I do not have the workbook I set up to test the code. I will do that
tomorrow and send you an update.

Alok Joshi

"broogle" wrote:

Hi Alok,

When I tried to insert USA between Canada and Germany, it only works
for Sheet2.ColumnB and the position of Sheet2.ColumnC remain the same,
all numbers didn't align with the changes. Could you please help me to
modife the macro.
Thanks a million.


  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 67
Default Update cells at other sheet

Thanks Alok!
I really appreaciate your time.

I can email you my worksheet if you want to.

Cheers
broogle

  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 318
Default Update cells at other sheet

Broogle,

Here is the revised code
These go into the Sheet2' events
Private Sub Worksheet_Activate()
SynchronizeSheets
UpdateSheet
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Sheet2.Columns("B:B")) Is Nothing Or _
Not Intersect(Target, Sheet2.Columns("C:C")) Is Nothing Then
UpdateCollection
End If
End Sub

These go into the module
Global gCol As New Collection

Sub UpdateCollection()
Dim r&, bError As Boolean
With Sheet2
For r = 1 To .UsedRange.Rows.Count
If .Cells(r, 2).Value < "" Then

bError = False
On Error Resume Next
gCol.Add Item:=.Cells(r, 3).Value, Key:=.Cells(r, 2).Value
bError = (Err < 0)
On Error GoTo 0

If bError Then
'existing item. Change the value associated with it.
gCol.Remove (.Cells(r, 2).Value)
gCol.Add Item:=.Cells(r, 3).Value, Key:=.Cells(r, 2).Value
End If
End If
Next r
End With
End Sub
Sub UpdateSheet()

Dim r&
Application.EnableEvents = False
With Sheet2
For r = 1 To .UsedRange.Rows.Count
If .Cells(r, 2).Value < "" Then
On Error Resume Next
.Cells(r, 3).Value = gCol(.Cells(r, 2).Value)
On Error GoTo 0
End If
Next r
End With
Application.EnableEvents = True

End Sub
Sub SynchronizeSheets()

Dim r&
Application.EnableEvents = False
With Sheet2
'Clear the two columns
With .Range(.Cells(1, 2), .Cells(.UsedRange.Rows.Count, 3))
.ClearContents
End With
For r = 1 To Sheet1.UsedRange.Rows.Count
.Cells(r, 2).Value = Sheet1.Cells(r, 2).Value
Next r
End With
Application.EnableEvents = True

End Sub

And this goes into the Workbook_Open
Private Sub Workbook_Open()
UpdateCollection
End Sub

Hope this works completely.

Alok Joshi
"broogle" wrote:

Thanks Alok!
I really appreaciate your time.

I can email you my worksheet if you want to.

Cheers
broogle


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Update a autofilter sheet from another sheet Don Excel Discussion (Misc queries) 1 June 18th 08 12:57 PM
Update from different sheet shakey1181 Excel Discussion (Misc queries) 0 May 15th 07 02:38 PM
insert query into excell sheet to update excell sheet and pivot table vbsolo Excel Discussion (Misc queries) 0 August 24th 05 12:41 PM
Update a sheet Alvin Hansen[_2_] Excel Programming 3 January 18th 05 02:05 PM
Sheet Update Help tiptop[_5_] Excel Programming 2 July 26th 04 04:00 AM


All times are GMT +1. The time now is 03:51 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"